【问题标题】:What is the definitive way to call the jquery ajax function before a window unloads?在窗口卸载之前调用 jquery ajax 函数的最终方法是什么?
【发布时间】:2011-03-28 17:52:54
【问题描述】:

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

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

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

更奇怪的是,当我关闭整个 IE8 应用程序后,似乎调用就通过了!是否被缓存?

所以其他人建议使用 jquery bind() 在卸载之前绑定 ajax。然而,对于这是否适用于所有浏览器,似乎有一些混合的答案。

我还没有尝试过 beforeunload,因为这似乎是一种“hack”方式。但是,如果它有效,那么我真的不在乎,只要它有效。

【问题讨论】:

    标签: jquery ajax onbeforeunload onunload


    【解决方案1】:

    可以不调用页面body标签中的函数吗?

    <body onbeforeunload="funcName(param)">
    

    这样每次页面卸载时它都会调用你的函数,你不必担心绑定。

    【讨论】:

    • 好的,但这相当于使用 jquery bind("beforeunload")。这就是问题所在,ajax调用应该绑定到unload还是beforeunload?
    • 哦,我明白了。我会将它绑定到 beforeunload,因为将它绑定到 unload 会导致 InternetExplorer 和旧版浏览器出现错误,因为它会尝试与浏览器关闭进程同时运行。我个人每次都使用 beforeunload。
    • 听起来很合理。您是否有记录 IE 卸载问题的链接?
    • 我找不到实际的文档说它不起作用。在我看过的大多数微软网站(如 msdn)上,即使所有用户都说有,mods 也会说没有问题。但是我发现很多其他网站都说用户在 IE 中遇到了问题
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多