这是我想在用户点击链接时执行的事件列表。
以下是代码:
// Manually save the lastest search result and update session at server
$('a.e').click(function (event) {
event.preventDefault();
if (('localStorage' in window) && window['localStorage'] !== null) {
$.post("Home/UpdateSession/", $("form").serialize());
var form = $("#myTable").html();
localStorage.setItem('myTable', form);
form = null;
}
$.get($(this).attr('href'));
});
我收到错误消息,说我在关注链接时未在服务器上更新会话。如果我在帖子中调用的动作设置断点,它就不会在那里打破。可以按此顺序执行这些步骤,还是在帖子之前调用click事件?
答案 0 :(得分:2)
在回复你对Matt Bridges帖子的评论时,要在卸载时执行ajax调用,你必须使用async: false
选项进行ajax调用,如:
$(window).bind('unload', function(){
$.ajax({
cache: false,
async: false,
url: "test.php"
});
});
答案 1 :(得分:1)
jQuery的post()
函数异步发生。在将值保存到本地存储并导航到结果之前,您需要等待帖子完成。现在发生的事情是浏览器在帖子结束前离开页面。
post()
的第三个(可选)参数是回调;你可以传递一个在帖子结束时运行的函数。您需要在该回调函数中放置您想要发布的所有操作,例如
if (('localStorage' in window) && window['localStorage'] !== null) {
$.post("Home/UpdateSession/", $("form").serialize(), function() {
var form = $("#myTable").html();
localStorage.setItem('myTable', form);
form = null;
$.get($(this).attr('href'));
});
return false; // prevent normal link behavior
}
else
{
return true;
}
编辑:添加return false
以防止正常的链接行为