当前位置:  开发笔记 > 编程语言 > 正文

你如何处理来自AJAX调用的错误?

如何解决《你如何处理来自AJAX调用的错误?》经验,为你挑选了2个好方法。

假设我有以下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
       }
   }
 });

这对我来说有点笨拙,但它确实有效.还有更好的选择吗?



1> Asciant..:

就个人而言,我的库中有以下代码的代码.

$.ajaxSetup({
    error: function(xhr){
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
    }
});

jQuery docs Ajax/jQuery.ajaxSetup

将错误从服务器端(使用php)传递到客户端的最好方法是在400的某个地方(通常与错误相关联)通过Ajax请求发送标头.一旦Ajax请求收到此信息,它将触发您的错误功能.这也意味着您不必定义错误:在每个$ .ajax调用中调用.

header('HTTP/1.0 419 Custom Error');

引自w3.org标题信息

错误4xx,5xx 4xx代码用于客户端似乎有错误的情况,5xx代码用于服务器知道服务器出错的情况.通常不可能区分这些情况,因此差异只是信息性的.主体部分可以包含描述人类可读形式的错误的文档.该文档采用MIME格式,可能只能是text/plain,text/html,也可能是请求中指定为可接受的格式.



2> Salty..:
$.ajax({
   type: "POST",
   url: "MyUrl",
   data: "val1=test",
   success: function(result){
        // Do stuff
   },
   error: function(request,status,errorThrown) {
        // There's been an error, do something with it!
        // Only use status and errorThrown.
        // Chances are request will not have anything in it.
   }
 });

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有