检查jQuery AJAX请求状态

时间:2010-06-13 08:23:56

标签: javascript jquery ajax

我通过jQuery做了2个不同的ajax请求,我必须检查另一个是否有效。我怎么能这样做?

我的ajax请求中的一个示例:

active_project_categories_ajax = $.ajax(
{
    url: "/ajax/get_skill_list",
    dataType: 'json',
    ......
});

我需要这样的东西:active_project_categories_ajax.status()

3 个答案:

答案 0 :(得分:5)

因为您正在返回XMLHttpRequest对象,所以您始终可以查看

active_project_categories_ajax.readyState
active_project_categories_ajax.status

readyState需要为4才能完成(成功或错误)。所以,如果它小于4,那么它仍然是活跃的。

这是readyState:

// states
  const unsigned short UNSENT = 0;
  const unsigned short OPENED = 1;
  const unsigned short HEADERS_RECEIVED = 2;
  const unsigned short LOADING = 3;
  const unsigned short DONE = 4;

引自:http://www.w3.org/TR/XMLHttpRequest/#the-xmlhttprequest-interface

在readyState变为4之前,您无法查看状态。否则可能会引发异常。 (实际上,我写了一个返回1MB数据的php文件......当readyState为3时,状态也是200.如果readyState也停在2,我怀疑状态为200。)

答案 1 :(得分:3)

您可以订阅AJAX events并更新状态指示符来执行此操作:

var status;

$.ajax({
   beforeSend: function(){
     status = 1;
   },
   complete: function(){
     status = 2;
   }
   // ...
});

答案 2 :(得分:1)

你快到了,statusXMLHttpRequest的属性,而不是函数。 jQuery.ajax返回XMLHttpRequest的对象。你正在做的事情坚持下去:

var req = $.ajax(..);

然后在需要时调用该对象上的status,而不是status()

req.status