假设我有以下jQuery AJAX调用:
$.ajax({ type: "POST",url: "MyUrl",data: "val1=test",success: function(result){ // Do stuff } });
现在,当我进行这个AJAX调用时,我希望服务器端代码运行一些错误处理检查(例如,用户是否仍然登录,他们有权使用此呼叫,数据是否有效等)。如果检测到错误,我该如何将该错误信息提示回客户端?
我最初的想法是返回一个包含两个字段的JSON对象:error和errorMessage。这些字段将在jQuery AJAX调用中进行检查:
$.ajax({ type: "POST",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');
错误4xx,5xx4xx代码适用于客户端似乎有错误的情况,以及服务器知道服务器发生错误的情况下的5xx代码。一般来说,不可能区分这些情况,所以区别只是信息。身体部分可以包含描述人类可读形式的错误的文档。该文档采用MIME格式,并且只能以text / plain,text / html格式或者在请求中指定为可接受的格式。