2011-02-22 48 views
3

我正在遠程提交一個表單,可能會連續多次提交表單。對於這種特殊情況,去除不是一種選擇。我正在尋找使用.submit()提交的遠程表單的.abort()的jQuery對等項,以便我可以取消之前提交的所有提交內容。殺死jquery ajax表單提交

由於提前, 加勒特

回答

1

也許需要時,你可以使用jQuery 排隊你的提交和.clearQueue()清除隊列。只是一個想法...

0

我不明白你的問題。如果表單已提交,則會向服務器發送請求...所以,如何中止該操作?

如果放棄你的意思,取消處理響應,只需使用增加/減少的控制變量來知道是否有掛起的請求。

從API:http://api.jquery.com/category/ajax/你不能這樣做。

+0

是的,我想取消處理回覆。問題在於服務器不一定按照接收請求的順序發回響應,所以一個簡單的請求計數器不會讓我確定哪個響應是最近的(除非我是愚蠢的並且沒有看到某些東西)。我可以在請求中包含計數器並將其返回,但如果可能的話,我希望避免服務器端參與。 – 2011-02-24 18:17:56

2

我所做的是附着於形式的beforeSend事件,XHR對象存儲的表單數據的一部分,放棄它,如果一個新的請求入隊:

$('form').bind("ajax:beforeSend", function(evt, xhr) { 
    console.log('Enqueued new xhr request'); 
    var prevXhr = $(this).data('current-xhr'); 
    if (prevXhr) { 
    prevXhr.abort(); 
    console.log('Aborting previous xhr request'); 
    } 
    $(this).data('current-xhr', xhr); 
}); 

,你仍然可以使用表格中的:remote => true選項很簡單。