2010-06-13 104 views
3

我通過jQuery做了2個不同的ajax請求,我必須檢查另一個是否活動。我怎樣才能做到這一點 ?檢查jQuery AJAX請求狀態

例如從我的Ajax請求之一:

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

我需要類似的東西:active_project_categories_ajax.status()

回答

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)。

+0

什麼樣的異常? – Anurag 2010-06-13 09:28:24

+0

這是我從Firebug控制檯得到的:未捕獲的異常:[Exception ...]組件返回失敗代碼:0x80040111(NS_ERROR_NOT_AVAILABLE)[nsIXMLHttpRequest.status]「nsresult:」0x80040111(NS_ERROR_NOT_AVAILABLE)「location:」JS frame :: http://www.somewebsite.com/proj/js/ajax_status/ :: anonymous :: line 54「data:no] – 2010-06-13 10:31:51

3

你會怎麼做,通過訂閱AJAX events和更新狀態指示:

var status; 

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

你幾乎在那裏,statusXMLHttpRequest的財產,而不是一個函數。 jQuery.ajax返回XMLHttpRequest的對象。在需要的時候

var req = $.ajax(..); 

然後調用status那個對象上,而不是status()

req.status