2010-07-05 193 views
3

我需要將額外的變量傳遞給jQuery,ajax回調函數。如何將參數傳遞給jQuery ajax請求的回調?

例如,給定:

while (K--) 
{ 
    $.get 
    (
     "BaseURL" + K, 
     function (zData, K) {ProcessData (zData, K); } 
    ); 
} 

function ProcessData (zData, K) 
{ 
    console.log (K); 
} 

ProcessData()將0每次報告(或任何K的最後一個值)。

我該如何確保ProcessData()能夠或可以得到正確的K值?

有沒有辦法做到這一點,而不包括$get()在函數中?

+0

停止回了一下,爲什麼你做了這麼多的請求,這個變量是什麼?你是否在跟蹤最後的請求何時完成? – 2010-07-05 22:17:52

+0

@Nick Craver:我做了這麼多的請求,因爲我需要從給定類型的多個頁面中選擇信息。在這種情況下,K用於跟蹤頁面順序,以便可以對結果進行排序(異步請求並不總是按順序返回)。也可能有其他變數。 ;-) – 2010-07-05 22:21:25

+0

做這個服務器端,單個請求回來會更好......這將是一個更好的用戶體驗,特別是對於高延遲客戶端,這在開發時沒有看到效果。 – 2010-07-05 22:25:27

回答

5

不可以。由於封閉方式的工作原理,所有內部函數將關閉相同的K變量(最終等於0)。您需要額外的間接級別來創建單獨的作用域。例如:

while (K--) 
{ 
    (function(K) 
    { 
     $.get 
     (
      "BaseURL" + K, 
      function (zData, status) {ProcessData (zData, K); } 
    ); 
    })(K); 
} 

此外,成功函數的第二個參數不應該叫K.該參數將獲得的地位,那麼這將影所需K.

相關問題