我有一個包含多個表單的頁面,我通過Ajax POSTs連續提交。起初,我嘗試使用同步XHR請求,但這會導致瀏覽器在請求期間鎖定,並打破我的DOM操作效果,這是不可接受的。所以,我最終使用的模式基本上是這樣的:有沒有更好的方法來連續提交多個AJAX請求?
var fcount = 0; // incremented for each form to be submitted
function submit_form(num) {
var fdata = { ... }; // data from form # num
$.ajax({ async: true,
url: '/index.cgi',
data: fdata,
type: 'POST',
success: function() {
if (num < fcount) {
submit_form(++num);
}
}
});
}
$('#submit_form_btn').click(function() { submit_form(1) });
遞歸令我有點醜陋的解決方案,以什麼本質上是一個反覆的問題。有沒有更清潔或更優雅的方式可以處理?
你爲什麼一件件發送數據?有很多這樣的東西或類似的東西嗎? – 2010-04-10 20:29:28
@Matti - 每個請求都需要一段時間來處理(需要進行文件上傳)。在單個請求中處理太多。 – friedo 2010-04-10 20:34:09
迭代和遞歸沒有他們第一次出現那麼不同(http://stackoverflow.com/questions/931762/can-every-recursion-be-converted-into-iteration,http://mitpress.mit.edu/ SiC顆粒/全文/電子書/圖書ZH-11.html#%_ sec_1.2)。既然你正在處理異步回調,堆棧增長並不是什麼大問題。 – outis 2010-04-10 20:55:45