2011-09-28 24 views
0

在其上有多個表單的Web應用程序上,如果您單擊移至另一個頁面的選項,我們會通過調用$.post(window.location.pathname, options, saveReturn, 'json');來保存任何未保存的內容,然後轉到通過設置一些參數並調用form.submit();來設置新頁面。這通常工作正常,但在我們客戶的生產服務器(當然不是他們的測試服務器)上,似乎並沒有發生$.post的操作 - 應該保存到數據庫的內容不會被保存。我有一位客戶技術支持人員運行螢火蟲會話,$.post命令觸發的POST顯示爲紅色,並且沒有「響應」標題。

是否有某種競爭條件導致我們在POST完成之前離開頁面?是否有一些方法可以等待POST完成,但缺少使saveReturn函數負責form.submit()?我寧願不將該功能添加到saveReturn,因爲如果使用「保存」按鈕手動保存他們的工作,則會完成相同的$.post調用。

回答

1

你的直覺似乎是正確的。如果你想從form.submit分離saveReturn「更多」您可以附加form.submitcomplete事件的要求:

$.post(window.location.pathname, options). 
    success(saveReturn). 
    complete(function(){ 
     form.submit(); 
    }); 

這是一種很好的,因爲它明確了兩個動作分離(假設,當然,你爲;這似乎是你想給你的問題)。

+0

看起來它會涉及一些手術的方式。但我喜歡「完整」功能的想法。 –

+1

順便說一句,我發現在末尾添加.success和.complete這個功能只適用於JQuery 1.5和更新版本。 –

1

這是因爲您在離開頁面時正在查看連接。您應該提交$.post的回調錶格。

$.post(window.location.pathname, options, function(data){ 
    saveReturn(data); 
    form.submit(); 
}, 'json'); 
相關問題