代码之家  ›  专栏  ›  技术社区  ›  Dave Kiss

jQuery Ajax错误处理

  •  6
  • Dave Kiss  · 技术社区  · 15 年前

    我在这里搜索过这些问题,但是我对如何在jquery的ajax中使用错误处理没有很好的理解(我是一个noob,所以它真的没有意义。)

    有人能给初学者描述一下吗?我目前正在通过Ajax将信息发布到一个PHP脚本,但是我想允许jquery识别从脚本返回的数据是错误还是成功。

    谢谢! 戴夫

    4 回复  |  直到 12 年前
        1
  •  20
  •   Bill    15 年前

    Ajax调用返回的错误是返回页面加载失败的结果。可能是您的php页面返回了一个有效的页面,但是结果不是您想要的。这是在成功返回时处理的。希望下面的代码截图将有助于说明…

    $.ajax({
        type: "POST",
        url: "login.php",
        data: "action=login&user=" + user + "&pass=" + pass,
        success: function(xhr){
            if ((xhr == "Invalid Login") 
                    || (xhr == "Invalid charaters in username.") 
                    || (xhr == "Missing username or password.")
                    || (xhr == "Unknown Error")) {
                $("#loginMessageContent").html(xhr);
            }
            else {
                simplemodalClose (dialog);
            }
       }, 
       error: function(xhr) {
           alert ("Oopsie: " + xhr.statusText);
       }
    });
    
        2
  •  2
  •   Doug Neiner    15 年前

    jquery Ajax错误处理实现为处理 HTTP Request 如果脚本返回“错误”或“成功”,则不会出现错误。如果服务器抛出错误(例如404未找到或500服务器错误),则会触发jquery的错误函数。它可以用几种方法处理,但一种好的方法是显示一个DIV,让用户知道发生了错误。

    HTML

    <div id="error" style="display: none">There was an error processing your last request</div>
    

    JQuery

    $(function(){
       $("#error").ajaxError(function(){
          var $error = $(this);
          $error.slideDown(500, function(){
              window.setTimeout(function(){
                  $error.slideUp(500);
              }, 2000);
          }); 
       });
    });
    

    如果发生错误,您的“成功”方法都不会触发,而且 div 将滑下,等待2秒钟,然后滑回原位。

    测试脚本的错误

    正如我提到的,您描述的内容听起来像是服务器脚本正在向客户机发送“错误”或“成功”或类似的内容。

    如果您使用 $.post 例如,您的错误处理代码可能如下所示:

    $.post('/your/url', { save_me: true }, function( data ){
       if(data == "error"){ 
          // handle error
       } else {
          // handle success
       }
    }
    
        3
  •  2
  •   Philip Schlump    15 年前

    这只是一种方法。我正在构建一个用JSON返回所有数据的应用程序。如果有错误,则更改JSON消息以反映这一点。每个返回对象的“状态”为 “成功”或“错误”。如果是一个错误,那么JSON中有一个“错误消息”部分, 描述错误。

    希望有帮助。

        4
  •  2
  •   NullPoiиteя    12 年前

    尽管这不是你的问题,但我会在这里张贴,因为它是相关的。

    与最近 JQuery v1.4 release ,现在验证JSON响应。它破坏了我的应用程序,因为我返回:

     {success:true}
    

    现在必须

     {"success":true} // HAS to be double quotes, single won't do it
    

    如果不正确,则调用错误处理程序。很容易解决,但需要一点时间来解决。

    推荐文章