鉴于某些情况,我被迫在会话中保留页面设置(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)
}
});
}
};
有谁知道问题可能是什么?
提前致谢
答案 0 :(得分:1)
代码看起来很好。您可以尝试bind('beforeunload', ...)
而非unload
,尽早抓住内容。但是,当然,如果其他内容也挂钩beforeunload
并且卸载被取消,即使您仍然在页面上,也会进行通话。
稍微偏离主题,但如果你可能找到一种不同的方式来做到这一点,我会的。当用户试图离开页面时,关闭同步ajax调用并不理想。