我正在尝试这样做:
$(window).unload( function () {
$.ajax({
type: "POST",
url: "http://localhost:8888/test.php?",
data: "test",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
alert (c);
});
但是,不会显示成功警报,此请求似乎也不会命中服务器。我做错了什么?
发布于 2009-12-01 02:48:26
我认为您需要使用async : false
参数使请求同步(默认情况下是异步的)。
同步请求在完成之前会锁定浏览器。如果请求是异步的,页面就会继续卸载。它的速度足够快,以至于请求从来没有时间触发。
发布于 2009-12-01 02:59:05
尝试使用async =false调用它;
jQuery.ajax({url:"http://localhost:8888/test.php?", async:false})
我刚试过了。
发布于 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回调。
https://stackoverflow.com/questions/1821625
复制相似问题