jQuery $ .ajax和readyStates

如何在jQuery $.ajax方法上调用Ajax就绪状态?

$.ajax()返回XmlHttpRequest对象,因此如果你真的想在状态发生变化时访问它,你可以这样做:

 var xhr = $.ajax({ ... }); xhr.onreadystatechange = function() { alert(xhr.readyState); }; 

但内置的回调应该是大多数用途所需要的,特别是successcomplete

要在请求触发之前执行操作,请使用beforeSend ,或者更适合大多数情况下的.ajaxStart().ajaxStop()事件…例如,在任何ajax活动进行时显示加载消息。

使用jQuery 2.0.2测试的方法:

 $.ajax({ beforeSend: function (jqXHR, settings) { var self = this; var xhr = settings.xhr; settings.xhr = function () { var output = xhr(); output.onreadystatechange = function () { if (typeof(self.readyStateChanged) == "function") { self.readyStateChanged(this); } }; return output; }; }, readyStateChanged: function (xhr) { if (xhr.readyState == 1) { /* Connected! Do something */ } }, url: "..." }); 

基本上,我需要的是readyState变为1 (已连接)后的回调,在我的情况下,在使用jQuery实现长轮询“推送”通知时非常有用。

通过为传递给ajax()方法的对象中的successerrorcomplete选项设置回调,您应该能够获得所需的一切。 看一下文档:

http://api.jquery.com/jQuery.ajax/

基本上,它的工作原理如下:

 $.ajax({ url: 'ajax/test.html', success: function(data) { alert('Load was performed.'); }, error: function() {alert("error occurred.")}, complete: function() {alert("ajax complete.")} }); 

您可以在回调函数中查看您可以访问的确切参数的文档。