2012-03-07 93 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