Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在onclick事件中发布并等待返回_Jquery_Asp.net Mvc - Fatal编程技术网

Jquery 在onclick事件中发布并等待返回

Jquery 在onclick事件中发布并等待返回,jquery,asp.net-mvc,Jquery,Asp.net Mvc,这是当用户单击链接时要执行的事件列表 用户单击搜索结果中的链接 使用jQuery post在服务器上更新会话 更新会话后,搜索将保存到localStorage 完成所有操作后,按照单击的链接进行操作 代码如下: // Manually save the lastest search result and update session at server $('a.e').click(function (event) { event.preventDefault(); if (

这是当用户单击链接时要执行的事件列表

  • 用户单击搜索结果中的链接
  • 使用jQuery post在服务器上更新会话
  • 更新会话后,搜索将保存到localStorage
  • 完成所有操作后,按照单击的链接进行操作
代码如下:

// 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'));
});  
当我跟踪链接时,我收到一个错误,说服务器上没有更新会话。如果我在post中调用的操作上放置断点,它不会在那里中断。是否可以按此顺序执行这些步骤,或者是在post之前调用了click事件?

jQuery的
post()
函数是异步执行的。在将值保存到本地存储并导航到结果之前,需要等待post完成。现在的情况是,浏览器在文章结束前离开页面

post()
的第三个(可选)参数是回调;您可以传递在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;
}
编辑:添加了
returnfalse
以防止正常链接行为

jQuery的
post()
函数异步发生。在将值保存到本地存储并导航到结果之前,需要等待post完成。现在的情况是,浏览器在文章结束前离开页面

post()
的第三个(可选)参数是回调;您可以传递在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
以防止正常的链接行为

在回复您对Matt Bridges post的评论时,要在卸载时执行ajax调用,您必须使用
async:false
选项执行ajax调用,如:

$(window).bind('unload', function(){
   $.ajax({
        cache: false,
        async: false,
        url: "test.php"
    });
});

在回复您对Matt Bridges帖子的评论时,要在卸载时执行ajax调用,您必须使用
async:false
选项执行ajax调用,如:

$(window).bind('unload', function(){
   $.ajax({
        cache: false,
        async: false,
        url: "test.php"
    });
});

您正在尝试访问哪个页面?主页/更新会话/索引。???或者Home/UpdateSession。??我试图访问文章中的ActionResult
UpdateSession
,然后获取所单击链接的href。那么这就是您正在使用的.NET?另外,尝试Home/UpdateSession作为url,而不是Home/UpdateSession/Yes,但我认为问题出在jQuery中。您试图访问哪个页面?主页/更新会话/索引。???或者Home/UpdateSession。??我试图访问文章中的ActionResult
UpdateSession
,然后获取所单击链接的href。那么这就是您正在使用的.NET?另外,尝试Home/UpdateSession作为url,而不是Home/UpdateSession/Yes,但我认为问题出在jQuery中。嗯,它仍然不起作用。如果我将
$('a.e')
更改为
$(窗口)
,并将
功能更改为
。卸载
,则效果非常好。但我只想将此操作应用于链接单击它仍然执行重定向。认为preventDefault会阻止它吗?请参阅我的编辑--在click handler函数中添加“return false”以防止浏览器跟随链接。嗯,它仍然不起作用。如果我将
$('a.e')
更改为
$(窗口)
,并将
功能更改为
。卸载
,则效果非常好。但我只想将此操作应用于链接单击它仍然执行重定向。认为preventDefault会阻止它吗?请参阅我的编辑--在click handler函数中添加“return false”,以防止浏览器跟随链接。谢谢,我认为async:false是问题所在。我发布了针对我的具体问题的完整解决方案。谢谢,我认为async:false是问题所在。我发布了我的具体问题的完整解决方案。