我有一个表单,它在提交时使用$ .ajax来调用将数据写入文本文件的bash脚本。
在Firefox中,如果我立即刷新页面或导航到其他页面,POST将中止,文本文件不会更新:
[15:07:12.781] POST http://server/writegit.cgi [undefined 891ms]
如果我在刷新前等待一两秒钟,POST就会完成,一切都很好:
[15:03:04.995] POST http://server/writegit.cgi [HTTP / 1.1 200 OK 2022ms]
但是,Chrome中不会出现此问题 - 一旦表单提交,即使我立即刷新页面,POST也会完成。
有什么方法可以让Firefox像Chrome一样?
答案 0 :(得分:4)
Ajax调用是异步的 - 意味着它们会被激活,并且将来某个时候会响应。代码不等待响应。如果您在此之前离开页面,则从请求下拉出地毯。
使调用同步,或添加一些“onbeforeunload”事件处理程序,以检查您的ajax调用是否已完成,然后再允许用户离开页面。
或:只是不刷新页面!