0

当用户单击后退按钮时,我正在尝试使用来自服务器的数据重新加载前一页。我正在使用卸载前的窗口方法。Ajax 调用应该调用控制器并从服务器获取值,但它没有触发。

任何帮助都感激不尽。

$(function() {
     $(window).bind('beforeunload', function() {
         $.ajax({
             url: "/test/searchUrl",
             type: "GET",
             cache: false,
             datatype: "text",
             success: function (result) {
                 alert('HI Ajax Call SUCCESS' + result);
             }
         });
         return;
        };
     });
4

2 回答 2

0

我想可能是因为调用是异步的,所以在 ajax 调用完成之前页面正在卸载。尝试使 ajax 调用同步,这意味着它将保持在那里直到完成。

    $(function() {
         $(window).bind('beforeunload', function(){
                 $.ajax({
                     async: false,
                     url: "/test/searchUrl",
                     type: "GET",
                     cache: false,
                     datatype: "text",
                     success: function (result) {
                         alert('HI Ajax Call SUCCESS' + result);
                     }
                 });
                return;
            });
    });

编辑:修复了平淡无奇的大括号和圆括号

此外,似乎 chrome 在 beforeunload 中阻止了警报,假设是为了阻止开发人员阻止您离开页面 - 但是您可以按照上面的用户建议返回一个字符串,该字符串将允许使用该字符串进行确认对话框。

于 2013-05-09T01:33:50.573 回答
0

这个问题看起来像是回答了你的问题,对话框运行 1 秒然后消失?. 您没有从 beforeunload 函数返回任何内容,因此它不会被阻止并且在 ajax 调用返回之前离开页面,您必须从浏览器将显示的方法返回一个字符串。

于 2013-05-09T01:35:22.643 回答