首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >页面卸载时使用JQuery的Ajax请求

页面卸载时使用JQuery的Ajax请求
EN

Stack Overflow用户
提问于 2009-12-01 02:44:08
回答 6查看 40.8K关注 0票数 72

我正在尝试这样做:

$(window).unload( function () { 

$.ajax({
    type: "POST",
    url: "http://localhost:8888/test.php?",
    data: "test",
    success: function(msg){
         alert( "Data Saved: " + msg );
    }
}); 
alert (c);
});

但是,不会显示成功警报,此请求似乎也不会命中服务器。我做错了什么?

EN

回答 6

Stack Overflow用户

发布于 2009-12-01 02:48:26

我认为您需要使用async : false参数使请求同步(默认情况下是异步的)。

同步请求在完成之前会锁定浏览器。如果请求是异步的,页面就会继续卸载。它的速度足够快,以至于请求从来没有时间触发。

票数 82
EN

Stack Overflow用户

发布于 2009-12-01 02:59:05

尝试使用async =false调用它;

jQuery.ajax({url:"http://localhost:8888/test.php?", async:false})

我刚试过了。

票数 22
EN

Stack Overflow用户

发布于 2015-05-19 20:58:50

最好的解决方案是使用navigator.sendBeacon。这是一个全新的功能,开始在新版本的浏览器中实现。该功能在比Chrome 39和Firefox 31更新的浏览器中可用。在撰写本文时,Internet Explorer和Safari还不支持它。为了确保您的请求在尚不支持新功能的浏览器中发送,您可以使用以下解决方案:

var navigator.sendBeacon = navigator.sendBeacon || function (url, data) {
  var client = new XMLHttpRequest();
  client.open("POST", url, false); // third parameter indicates sync xhr
  client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
  client.send(data);
};

此函数不允许您注册onsuccess回调。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1821625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档