繁体   English   中英

jQuery AJAX错误处理

[英]jQuery AJAX error handling

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

任何人都可以向初学者描述这个吗? 我目前正在通过AJAX将信息发布到PHP脚本,但是希望允许jQuery识别脚本中返回的数据是错误还是成功。

谢谢! 戴夫

从ajax调用返回的错误是从未成功的页面加载返回结果。 可能是您的php页面返回了一个有效的页面,但结果不是您想要的。 这是在成功回归的情况下处理的。 希望以下代码snippit有助于说明......

$.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);
   }
});

实现jQuery AJAX错误处理以处理HTTP Request是否有错误,如果您的脚本返回“错误”或“成功”。 如果服务器抛出错误(例如404 Not Found或500 Server Error),那么它将触发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
   }
}

这只是一种方法。 我正在构建一个以JSON格式返回其所有数据的应用程序。 如果出现错误,则更改JSON消息以反映此情况。 每个返回对象都具有“成功”或“错误”的“状态”。 如果是错误,那么JSON的“error_message”部分描述了错误。

我希望有所帮助。

即使这不是你的问题,我会在这里发布,因为它是相关的。

在最近的JQuery v1.4版本中 ,JSON响应现在已经过验证。 它打破了我的应用,因为我回来了:

 {success:true}

现在它必须是

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

如果不正确,则调用错误处理程序。 简单的修复,但需要一点点弄清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM