6
我使用的getJSON有一個回調,看起來像這樣的跨域長輪詢請求:如何殺死一個較老的jsonp請求?
$.getJSON("http://long-polling.com/some.fcgi?jsoncallback=?"
function(data){
if(data.items[0].rval == 1) {
// update data in page
}
});
的問題是請求長輪詢服務可能需要一段時間才能恢復,而另一個的getJSON請求可能會在此期間進行並更新頁面,即使它是一個陳舊的響應。
REQ1: ħ**號碼://long-polling.com/some.fcgi在 10:00 AM
REQ2: ħ**號碼://long-polling.com /some.fcgi?在 上午10:01
REQ1回報和更新上 數據的頁面上午10:02
我想辦法,如果REQ2已經取得從REQ1返回無效。
謝謝!
+1。即將給出同樣的答案。 – Boldewyn 2010-05-04 13:27:00
JSONP不使用XMLHttpRequest,它向頁面中注入HTML
我不認爲工作作爲的getJSON使用JSONP方法實際上通過動態插入您的瀏覽器中執行該腳本標籤工作。我不認爲有什麼辦法可以阻止瀏覽器執行腳本......是嗎?
來源
2010-05-05 18:25:13
同意;看到這個問題的更多細節,http://stackoverflow.com/questions/4162261/i-cannot-stop-an-ajax-request-using-jquery-and-abort-function – goggin13 2011-06-23 15:53:35
正如@NewToDB所提到的,你不能取消jsonp請求(例如告訴瀏覽器停止嘗試加載標籤的src),但是你可以實現一種機制來有效地忽略舊調用的返回數據。定義一個全局變量,每當您打算進行jsonp調用時都會遞增,並將該變量的值作爲參數傳遞給服務器。您還需要將它從服務器傳回(我假設您也擁有服務器代碼)。如果您的計數器的當前值不等於返回的計數器值,那麼您知道另一個服務器調用已經完成,因此您可以忽略返回的數據。
...
來源
2011-08-11 15:04:25 PPrice
我使用全局變量這樣的任務。這不是一個很好的方法,但是最簡單的方法。
來源
2011-10-20 10:57:12 Leksat