2012-03-07 89 views
0

我有一個表單提交時使用$ .ajax來調用將數據寫入文本文件的bash腳本。如果我刷新頁面沒有完成頁面

在Firefox中,如果我馬上刷新頁面或導航到不同的頁面,在POST中止,文本文件不更新:

[15:07:12.781] POST http://server/writegit.cgi [未定義891ms ]

如果我等待1秒鐘刷新前二,POST完成,一切都很好:

[15:03:04.995] POST http://server/writegit.cgi [HTTP/1.1 200 OK 2022ms]

但是,這個問題在Chrome中沒有發生 - 一旦表單提交,即使我立即刷新頁面,POST也會完成。

有什麼辦法可以讓Firefox像Chrome一樣行事?

+1

好奇,爲什麼有人會想要那樣。 – zerkms 2012-03-07 20:17:50

+1

想要什麼? – Jeff 2012-03-07 20:22:57

+0

在動作完成之後,確認回來之前立即更改頁面 – zerkms 2012-03-07 20:25:22

回答

4

Ajax調用是異步的 - 意味着它們會啓動並在未來的某個時間響應。代碼不會等待響應。如果在這種情況發生之前您離開頁面,則會從請求下拉出地毯。

要麼使調用同步,要麼添加一些「onbeforeunload」事件處理程序,以檢查您的ajax調用是否已完成,然後允許用戶離開頁面。

或者:只是不刷新頁面!

+0

向$ .ajax請求添加async:'false',但問題仍然存在......任何想法? – Jeff 2012-03-07 20:34:24

+0

啊,現在開始工作 - 我不得不放棄報價。瀏覽器在Firefox(不是Chrome)中鎖定了一秒鐘,但沒有什麼大不了的。謝謝! – Jeff 2012-03-07 20:43:10

+0

window.onbeforeunload = function(){return confirm(「你還沒有保存的數據!」)} – 2012-03-07 20:44:38