在窗口关闭之前调用jQuery的ajax函数的明确方法是什么?

3

我需要在窗口卸载之前调用jQuery ajax()函数。 在我的情况下,是一个POST请求,我不关心返回结果,我只想更新数据库。

因此,答案似乎是将一个函数绑定到卸载事件,即使用jQuery unload()函数,并且该函数会进行ajax调用。此外,我知道您应该向调用中添加同步参数。换句话说,将async: false添加到jQuery ajax()调用中。

然而,我已经尝试了所有这些方法,在IE8上它们都不起作用!我测试了很多次,但它在IE8上根本不起作用。在Firefox和Chrome上运行良好。

更奇怪的是,在我关闭整个IE8应用程序之后,似乎调用会通过!它被缓存了吗?

因此,其他人建议使用jquery bind()在beforeunload上绑定ajax。但是,对于是否可以在所有浏览器上使用这种方法存在一些不同的答案。

我还没有尝试beforeunload方法,因为它看起来像是"hack"的方法。然而,如果它能够正常工作,那么我并不在意它是否"hack"。

1个回答

0
你能不能不在页面的body标签中调用这个函数?
<body onbeforeunload="funcName(param)">

这样每次页面卸载时都会调用您的函数,您就不必担心绑定问题了。


1
好的,但这只相当于使用jQuery的bind(“beforeunload”)方法。问题是,Ajax调用应该绑定到unload还是beforeunload事件呢? - user680696
哦,我明白了。我会将它绑定到beforeunload,因为将其绑定到unload会在InternetExplorer和旧版浏览器中引起错误,因为它尝试在浏览器关闭进程同时运行。个人而言,我每次都使用beforeunload。 - Loogawa
听起来很合理。您有IE卸载问题的文档链接吗? - user680696
http://www.aspxtutorial.com/post/2011/02/06/Difference-between-javascript-OnUnload-VS-OnBeforeUnload-Events.aspx - Loogawa
我找不到实际的文档说明它不起作用。在我查看的大多数微软网站(如MSDN)上,管理员会说没有问题,即使所有用户都说有问题。但我发现很多其他网站都说用户在IE中遇到了问题。 - Loogawa
感谢您的努力。我会检查这些东西。 - user680696

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接