2012-03-05 16 views
0

我有一堆jQuery AJAX發佈請求包裝在for循環中。每個請求提供了不同的參數。我的問題是,在請求失敗的情況下,如何判斷該請求傳遞了哪些參數數據?在成功/完整/錯誤函數中訪問發佈請求的參數數據

當我嘗試:

for(i = 0; i < toSubmit.length; i++) { 
    $.post('doSomething.php', 
     {id: toSubmit[i]}, 
     function(data) { /* Do something here */ }, 
     'json') 
    .error(function() { 
    console.log(toSubmit[i] + " didn't work!"); 
    }); 
} 

...的error功能將只輸出toSubmit的最後一個值,因爲i指針已取得進展,一路過關斬將的for循環,同時請求被解僱異步。在successcomplete函數中會發生同樣的情況;我的方式是確保返回的JSON包含各自的id;但如果請求失敗,我無法使用此解決方法。

有沒有辦法讓我瞭解這些信息,還是有更好的方法來解除這些請求?

回答

1

看來你必須爲方法調用設置正確的上下文。您可以查看jQuery proxy()方法,該方法允許您爲回調提供正確的上下文。

嘗試這樣:

for(i = 0; i < toSubmit.length; i++) { 
    var ctx = {id: i}; 

    $.post('doSomething.php', 
     {id: toSubmit[i]}, 
     function(data) { /* Do something here */ }, 
     'json') 
    .error($.proxy(function() { 
    console.log(this.id + " didn't work!"); 
    }, ctx)); 
}​ 
+0

完美!謝謝:) – Xophmeister 2012-03-05 15:54:23

1

試試這個:

beforeSend:function(jqXHR, settings){ 
    jqXHR.parameters = { /* data or parameters store here*/} 
} 


error: function(jqXHR, textStatus, errorThrown){ 
    var params = jqXHR.parameters 
} 
+0

接受dhaval的回答,但也贊成你的回答。謝謝 :) – Xophmeister 2012-03-05 15:55:09

相關問題