我想在一个用户关闭窗口时执行ajax查询。我有这个代码:
var $jQ = jQuery.noConflict();
$jQ(window).bind('unload', function() {
$jQ.ajax({
type: "GET",
url: "http://www.mydomain.com/post_untrack.php" ,
success: function(msg){
alert("Untrack");
}
});
});
我收到“alert”事件,但脚本未执行...
post_untrack.php:
<?php
mail("myemail@mydomain.com", "Script executed", "Hooray!!!");
?>
有什么想法吗?
感谢!!!
答案 0 :(得分:3)
要使其工作,您需要添加属性
async: false
到.ajax()
选项对象,另外你需要在onbeforeunload
执行它,所以在jQuery中
$jQ(window).bind('beforeunload',...);
答案 1 :(得分:1)
默认情况下,ajax请求是异步。因此,虽然您可以在卸载窗口时启动请求,但它可能会立即取消并且从未实际发送给用户。虽然可以使请求同步,但同步请求通过使浏览器停止运行实际上会破坏用户体验。
有关this other SO question and its answers的更多信息。
当然,任何ajax调用都将受Same Origin Policy的约束,如果相关的话。
答案 2 :(得分:0)
是与尝试进行ajax调用的页面在同一域中发布的URL吗?