jQuery-ajax调用:async属性不起作用?

时间:2010-06-14 07:25:30

标签: javascript jquery ajax asynchronous

鉴于某些情况,我被迫在会话中保留页面设置(Javascript值)并且必须在离开页面之前完成(我不能使用cookie,因为“pageSettings”可能会变得相当large和localStorage还不是一个选项;))。所以这就是我尝试的方式。然而,当我再次直接调用页面时,“http://blabla.com/bla”的调用发生异步,即使设置了async-attribute(我没有收到前一个调用的设置,但是没有前):

$jQ(document).ready(function () {
    $jQ(window).unload(Main.__setSessionValues);
});

var Main = {
    pageSettings: {},

    __setSessionValues: function __setSessionValues() {
        $jQ.ajax({
            type: "POST",
            async: false,
            url: "http://blabla.com/bla",
            data: {
                pageSettings: Object.toJSON(Main.pageSettings)
            }
        });
    }
};

有谁知道问题可能是什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

代码看起来很好。您可以尝试bind('beforeunload', ...)而非unload,尽早抓住内容。但是,当然,如果其他内容也挂钩beforeunload并且卸载被取消,即使您仍然在页面上,也会进行通话。

稍微偏离主题,但如果你可能找到一种不同的方式来做到这一点,我会的。当用户试图离开页面时,关闭同步ajax调用并不理想。