如何获得Jquery Ajax Readystates

我怎么能通过jquery知道ajax请求的readystates? 通常,不使用jquery,我们将发送一个这样的ajax请求:

http.open("POST", url, true); http.onreadystatechange = function() { if(http.readyState == 4 && http.status == 200) { // do something } } 

因此,我可以使用上面的代码轻松跟踪1到4的readystate值,并执行必要的操作,例如当readystate为1时显示加载图标。

但是通过jquery ajax调用,我如何跟踪readystate值?

我正在通过jquery进行ajax调用,如下所示:

 $.post('ajax/test.html', function(data) { $('.result').html(data); }); 

看看$.ajax的文档。 你有可能传递不同的回调(也许不是为了外翻“就绪状态”,但它对指标来说已经足够了):

beforeSend(jqXHR, settings) function
一个预请求回调函数,可用于在发送之前修改jqXHR (在jQuery 1.4.x, XMLHTTPRequest )对象中。 使用它来设置自定义标题等jqXHRsettings映射作为参数传递。 这是一个Ajax事件。 在beforeSend函数中返回false将取消该请求。 从jQuery 1.5开始,无论请求的类型如何,都将调用beforeSend选项。

success(data, textStatus, jqXHR) 函数,数组
如果请求成功则调用的函数。 该函数传递三个参数:从服务器返回的data ,根据dataType参数格式化; 描述状态的字符串; 和jqXHR (在jQuery 1.4.x, XMLHttpRequest )对象。 从jQuery 1.5开始,成功设置可以接受一系列函数。 每个函数将依次调用。 这是一个Ajax事件 。

error(jqXHR, textStatus, errorThrown) 函数
请求失败时要调用的函数。 该函数接收三个参数: jqXHR (在jQuery 1.4.x中, XMLHttpRequest )对象,描述发生的错误类型的字符串和可选的exception对象(如果发生)。 第二个参数的可能值(除了null )是"timeout""error""abort""parsererror" 。 这是一个Ajax事件 。 从jQuery 1.5开始, error设置可以接受一系列函数。 每个函数将依次调用。 注意:不会为跨域脚本和JSONP请求调用此处理程序。

complete(jqXHR, textStatus) 函数,数组
请求完成时要调用的函数(执行successerror回调之后)。 该函数传递两个参数: jqXHR (在jQuery 1.4.x, XMLHTTPRequest )对象和一个字符串,用于对请求的状态进行分类( "success""notmodified""error""timeout""abort""parsererror" )。 从jQuery 1.5开始, complete设置可以接受一系列函数。 每个函数将依次调用。 这是一个Ajax事件 。

所以最好的想法是在传递给beforeSend的回调中显示指标并将其隐藏complete


例:

因此,您必须将代码重写为:

 $.ajax({ url: 'ajax/test.html', type: 'POST', beforeSend: function() { // show indicator }, complete: function() { // hide indicator }, success: function(data) { $('.result').html(data); } }); 

虽然我不明白为什么你使用POST,因为你没有发送任何数据(至少在你的示例代码中)。

使用

 $.ajax({ url:, success:function(){ }//This is ready state 4 }); 

perform necessary action like showing a loading icon when readystate is 1.

为此你可以使用ajaxStartajaxStop