在卸载功能上执行AJAX调用

时间:2010-12-15 18:11:41

标签: javascript ajax jquery

我必须在用户尝试离开时执行代码只是对服务器的简单调用,通知必须删除文件,它不会做出任何响应,但系统不会调用。

                    $(window).unload(function(){
                           alert(1)
                           window.key = document.getElememtsByTagName('body')[0].getAttribute('key');
                           catcher('clearBt');//The catcher makes the AJAX call like i show below.
                    });
//This is the call to the server.
        phone.open(method, address, true);
        phone.setRequestHeader("Content-type", 'application/x-www-form-urlencoded');
        phone.send(reqStr);

我尝试使用onbeforeunload但结果是一样的......

2 个答案:

答案 0 :(得分:1)

很好,我和Magento Checkout有同样的问题。我这样解决了

var responseCancel= jQuery.ajax({
        url:'<?php echo Mage::getBaseUrl() . 'checkout/onepage/callWsCancelOrder'; ?>',
        cache: false,
                  async: false
         }).responseText;

谢谢

答案 1 :(得分:0)

AJAX默认是异步的,将以文档卸载结束。尝试将其作为同步调用运行。

您必须将其更改为

phone.open(method, address, false /*synchronous*/);

页面应该等待请求完成。