如何获得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
)对象中。 使用它来设置自定义标题等jqXHR
和settings
映射作为参数传递。 这是一个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)
函数,数组
请求完成时要调用的函数(执行success
和error
回调之后)。 该函数传递两个参数: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.
为此你可以使用ajaxStart和ajaxStop