假设我有以下jQuery AJAX调用:
$.ajax({ type: "POST", url: "MyUrl", data: "val1=test", success: function(result){ // Do stuff } });
现在,当进行此AJAX调用时,我希望服务器端代码通过一些错误处理检查来运行(例如,用户是否仍在登录,他们是否有权使用此调用,数据是否有效,等等)。如果检测到错误,如何将错误消息冒泡回客户端?
我最初的想法是返回一个带有两个字段的JSON对象:error和errorMessage。然后将在jQuery AJAX调用中检查以下字段:
$.ajax({ type: "POST", url: "MyUrl", data: "val1=test", success: function(result){ if (result.error == "true") { alert("An error occurred: " & result.errorMessage); } else { // Do stuff } } });
这对我来说有点笨拙,但确实有效。有更好的选择吗?
就个人而言,我的库中的代码与以下代码类似。
$.ajaxSetup({ error: function(xhr){ alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText); } });
jQuery docs Ajax / jQuery.ajaxSetup
将错误从服务器端冒泡(使用php)到客户端的最佳方法是通过Ajax请求在400的某个位置发送标头(始终与错误相关)。一旦Ajax请求收到此请求,它将触发您的错误功能。这也意味着您不必定义错误:在每个$ .ajax调用中调用。
header('HTTP/1.0 419 Custom Error');
引用w3.org标头信息
错误4xx,5xx 4xx代码用于客户端似乎已出错的情况,而5xx代码用于服务器知道服务器已出错的情况。 通常无法区分这些情况,因此区别仅是信息性的。正文部分可能包含以人类可读形式描述错误的文档。该文档为MIME格式,并且只能是text / plain,text / html或请求中指定的可接受格式之一。