jQuery AJAXerror handling

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

任何人都可以向初学者描述这个吗? 我目前正在通过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 AJAXerror handling以处理HTTP Request是否有错误,如果您的脚本返回“错误”或“成功”。 如果服务器抛出错误(例如404 Not Found或500 Server Error),那么它将触发jQuery的错误function。 它可以通过几种方式处理,但一种不错的方法是显示div让用户知道有错误。

HTML

  

jQuery的

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

如果发生错误,您的“成功”方法都不会触发,并且该div将向下滑动,等待2秒,然后向上滑动。

测试脚本是否存在错误

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

例如,如果您使用$.post ,则error handling代码可能如下所示:

 $.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响应现在已经过validation。 它打破了我的应用,因为我回来了:

  {success:true} 

现在它必须是

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

如果不正确,则调用error handling程序。 轻松修复,但需要一点点弄清楚。