2011-04-07 82 views
2

我有一個網頁,有幾個jQuery ajax調用,它們在.NET web方法的同一時間異步觸發。jQuery Ajax如何知道哪個數據與哪個成功回調匹配?

這些web方法將數據返回給每個.ajax調用的成功回調處理。

我的問題可能是低級別的。 jQuery/Javascript如何知道哪些數據返回到哪個.ajax調用?我使用網絡嗅探器查看返回數據包,但無法看到可用於將其鏈接回原始呼叫的任何類型的標識。我猜它與jqXHR對象有關。如果它在響應數據包中,我無法在嗅探器中看到它。

任何技術性的解釋可能會有所幫助。

此外: 我這樣問,因爲我會在服務器端使用異步方法。 .ajax最初調用的方法不是返回數據的方法。一個不同的線程正在完成這項工作。

+0

我曾經愛過尼爾。 @Tony_Nenrich,其實很簡單,每個ajax調用都會發送和接收它自己的數據,這意味着它們永遠不會混淆。 – Khez 2011-04-07 19:28:54

+1

@Neal:它夠好的。我希望這不是一個不給你一個好答案的理由。 – 2011-04-07 19:30:22

+0

@Khez:我在尋找更多的細節。他們爲什麼不混淆?什麼把他們綁在一起?在這段時間內頻道必須連接並打開嗎? – 2011-04-07 19:37:53

回答

5

瀏覽器可以從Web服務器請求多個圖像並知道將每個圖像放在頁面上的位置。它是HTTP協議的一部分。瀏覽器發送一個請求,並將響應發送到同一個TCP套接字上。如果瀏覽器同時等待多個對象,則會打開多個TCP套接字。

在您的數據包嗅探器中,仔細查看TCP端口號,特別是響應端口(非80端口)。

您的瀏覽器和您的Web服務器/框架將做正確的事情。在服務器端,確保您將響應發送給適當的請求,並且無論接收到的訂單/處理花費了多長時間,它都會返回到jquery中的正確位置。如果你有多個線程在服務器上交換數據,你就會讓生活變得比需要的更困難,所以我認爲你有一個很好的理由並且知道你在做什麼。

1

我相信這篇文章可能有一些您正在尋找的信息。 HTTP請求和響應通過稱爲交換的進程進行配對。

Name for HTTP Request+Response

的XMLHttpRequest返回HTTP狀態代碼(例如200,304,500等)和readyState的給瀏覽器的請求之後。 jQuery ajax使用XMLHttpRequest來確定哪些代碼是成功的,哪些是失敗的。

https://developer.mozilla.org/En/Using_XMLHttpRequest

http://api.jquery.com/jQuery.ajax/

+0

他問每個響應如何映射到每個呼叫.... – Khez 2011-04-07 19:29:46

+1

但瀏覽器可以在一秒鐘內獲得幾個200個狀態碼。它仍然需要知道哪一個去了什麼。 – 2011-04-07 19:33:17

0

當進行AJAX調用時,jQuery會創建對基礎XMLHTTPRequest對象的內部引用,並將事件處理程序綁定到該對象。

0

你有沒有使用XMLHttpRequest objec t沒有圖書館?如果你這樣做很容易理解。我建議你去寫10行代碼,看看它是如何工作的。

您爲每個要創建到服務器的請求創建XMLHttPRequest對象的實例。您爲它分配一個4次調用的onreadystatechange事件處理程序。當readystate命中4時,就完成了。在JQuery的情況下,它會調用你的回調函數。

相關問題