我有一个通过 AJAX 将数据提交到外部服务器的表单。
然后验证发送的数据,如果正确,用户就可以进入表单的下一步。
如果数据无效,则服务器返回一个错误,并以 JSON 对象的形式输出。
我可以在 FIDDLER 中看到 JSON 对象。
我的目标是获取 JSON 数据并将其输出到页面上并通知用户。
理想情况下,我会将其作为 AJAX 请求错误处理程序的一部分(见下文)。
这可以实现吗?
附注:
不幸的是,我无法设置演示,因为发布数据的链接仅在我的网络上可用。
还值得指出的是,后端脚本输出的错误实际上存储在数据发布到的链接中。
AJAX 请求:
var setUpVrmData = function() {
$("#getvrmdata").click(function () {
var p_vrm = $('#p_vrm').val();
$.ajax({
dataType: "JSON",
type: "POST",
url: "http://217.35.33.226:8888/l4_site/public/api/v1/BC8F9D383321AACD64C4BD638897A/vdata",
data: {
vrm: p_vrm,
},
success: function(data) {
//Empty the dropdown box first.
$("#p_model").empty();
appendString = "<option value='none'>-- Select your model --</option>";
$.each(data['vehiclemodel'], function (k, v) {
// += concatenate the string
appendString += "<option value='" + k + "'>" + v + "</option>";
});
$("#p_model, #ent_mileage").show();
$('.js-find-my-car').hide();
$('.js-get-price').show();
$("#p_model").append(appendString);
$("#p_model").prop("disabled", false);
$('#skey').val(data['skey']);
},
error: function() {
console.log("We return error!");
}
});
});
最佳答案
Error 函数将返回一个 XHR 对象,您可以解析该对象以获得您想要的消息。我不知道什么在提供数据,因此根据设置方式,您的里程可能会有所不同。我使用 PHP 和 C# 并写入控制台来完成此操作,但在这两种情况下我都能够控制返回的数据。
我使用了这篇文章:http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/作为起点。
您需要更新:
error: function() {
console.log("We return error!");
}
至
error: function(xhr, status, error) {
console.log("We return error!");
}
在 Firebug 中设置一个断点来检查是否传递了 XHR 对象,如果没有传递,则需要找到一种方法来获取它。。你提到你可以在 fiddler 中看到 JSON,它应该可供你使用。如果是,只需使用文章中提出的 eval
就可以了。如果没有,您将不得不去弄清楚如何获得它,具体取决于您的平台难度会有所不同。
需要注意的一些事情,eval
很困惑,可能会给您带来麻烦。在我这样做的情况下,我删除了生产中的评估。
此外,从 jQuery 1.8 开始,success
error
和 complete
已被弃用。如果您计划将来更新 jQuery,请使用 done
fail
和 always
。
jQuery API 引用,供引用。
关于javascript - AJAX 和 JSON 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351708/