当我点击后退按钮时,我正在尝试使用服务器上的数据重新加载上一页。 我正在使用Window Before Unload方法。 Ajax调用应该调用Controller并从服务器获取值,但它没有触发。
非常感谢任何帮助。
$(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;
};
});
答案 0 :(得分: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中阻止警报,假设是阻止开发人员阻止您离开页面 - 但是,您可以在上面建议的用户返回一个字符串,该字符串将允许使用该字符串的确认对话框。
答案 1 :(得分:0)
这个问题看起来像是回答了你的问题Dialog box runs for 1 sec and disappears?。您没有从beforeunload函数返回任何内容,因此它没有被阻止并且在ajax调用返回之前离开页面,您必须从浏览器将显示的方法返回一个字符串。