1

当我尝试执行 ajax“即发即弃”调用时,我遇到了 firefox 15.0.1 的问题。基本上当用户关闭页面或重定向时,我想执行一个 ajax 调用。在 Chrome 和 IE 中,当我在 Charles 中查看我的请求时,这似乎工作正常。但是,在 FireFox 中,我没有看到我的 ajax 调用。

jQuery(window).on('beforeunload',function(){
     jQuery.ajax({url:'some page', type: 'GET', dataType: 'script'});
});

当我包含 console.log 或警报时,我知道该事件有效。在卸载之前似乎没有足够的时间来执行这个 ajax 调用。有人对此有任何想法或有解决方法吗?

4

1 回答 1

0

您可以创建另一个执行 ajax 调用的 html 页面,该页面将从 onbeforeunload 事件中调用。

该新页面将执行该操作并在完成后立即关闭。

另一种方法是使用同步 ajax 调用,如下所示:

jQuery.ajax({
     url:    'http://abcexample.com/getInfo',
     success: function(result) {
                  if(result.isOk == false)
                      alert(result.message);
              },
     async:   false
});

但是同步调用会等待调用完成,然后再继续。如果您想执行并忘记 ajax 调用的作用,那么第一种方法会很好用。

于 2012-12-02T06:32:57.977 回答