我通过jQuery做了2个不同的ajax请求,我必须检查另一个是否有效。我怎么能这样做?
我的ajax请求中的一个示例:
active_project_categories_ajax = $.ajax(
{
url: "/ajax/get_skill_list",
dataType: 'json',
......
});
我需要这样的东西:active_project_categories_ajax.status()
答案 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)
你快到了,status
是XMLHttpRequest
的属性,而不是函数。 jQuery.ajax
返回XMLHttpRequest
的对象。你正在做的事情坚持下去:
var req = $.ajax(..);
然后在需要时调用该对象上的status
,而不是status()
req.status