用户关闭窗口时的Ajax查询?

时间:2010-12-28 16:43:10

标签: php jquery ajax

我想在一个用户关闭窗口时执行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!!!");
?>

有什么想法吗?

感谢!!!

3 个答案:

答案 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吗?

http://en.wikipedia.org/wiki/Same_origin_policy