Javascript jqueryajax,在进行Ajax时防止刷新按钮
嗨,我必须执行类似的操作,当ajax正在进行时,就不允许用户进行页面刷新 这是我的密码Javascript jqueryajax,在进行Ajax时防止刷新按钮,javascript,jquery,ajax,Javascript,Jquery,Ajax,嗨,我必须执行类似的操作,当ajax正在进行时,就不允许用户进行页面刷新 这是我的密码 $('#submit').click(function() { $(function() { $(".col1").mask("Generating csv...."); //This will generate a mark, Here i would like to prevent the user from doing any sort of operation.
$('#submit').click(function() {
$(function() {
$(".col1").mask("Generating csv...."); //This will generate a mark, Here i would like to prevent the user from doing any sort of operation.
var to = $('#filters_date_to').val();
var from = $('#filters_date_from').val();
$.ajax({
url:"../dailyTrade/createCsv?filters[date][to]="+to+"&filters[date][from]="+from,success:function(result){
if(result) {
$(".col1").unmask(); //Here we can unlock the user from using the refresh button.
window.location = '../dailyTrade/forceDownload?file='+result;
setTimeout('location.reload(true);',5000);
}
}
});
});
});
任何建议。我怀疑你是否应该这样做
$(window).bind('beforeunload',function(){
return 'are you sure you want to leave?';
});
如果您正在讨论网页上的刷新“html按钮”,那么这很容易做到。在进行ajax调用之前,禁用刷新按钮,并在ajax调用的成功/错误函数上启用它
禁用按钮
$("#refreshBtn").attr("disabled", "disabled");
$("#refreshBtn").removeAttr("disabled");
启用按钮
$("#refreshBtn").attr("disabled", "disabled");
$("#refreshBtn").removeAttr("disabled");
您最好使用onbeforeunload向用户显示一条消息,说明请求正在进行中,并询问用户是否确定要继续 e、 g
您不能以任何方式阻止用户使用JS或其他任何方式离开您的页面 您不能仅仅通过插入JavaScript代码来实现这一点 我能想到的唯一办法是:
您应该修改您的脚本,以便在页面已刷新时继续执行(使用HTML5 localStorage)
在您的情况下,我会将localStorage置于简单状态(boolean)中,以检查ajax调用是否发生。若确实发生了,那个么只需再次尝试调用相同的url,就会得到文件名。但在服务器端(如果您还没有这样做),您应该实现缓存,因此当同一url被调用两次时,您不需要创建两个单独的文件,它可能是同一个文件(服务器在硬件资源上会轻得多)。如果您指的是浏览器的“刷新”按钮,那么您不应该这样做。可能的重复:,当你们开始输入新的问题时,重新加载页面时,那个么这个特性呢?如果您确定,您将得到提示。如果没有,则不会重新加载。因此,也许有一种方法可以强制不重新加载。您可以使用
beforeunload
事件来执行此操作。我使用了$(window).bind,这样我就可以在ajax请求完成后解除绑定,谢谢Yasser@RaviMone您可以使用:window.onbeforeunload=$.noop如果使用window.onbeforeunload=function(){…}绑定,则使用code>解除绑定代码>谢谢您提供的替代解决方案,对,但用户仍然可以执行页面刷新。@DRAX-对,但您完全无法阻止他们,就像您无法阻止他们关闭浏览器或按下计算机上的电源按钮一样。@Adam,这就是为什么我贴出应该实施恢复的帖子。一个简单的例子是,当你们开始下载时,重启浏览器,你们就可以继续下载了。需要注意的是,同步ajax调用不会停止chrome来导航。它不像FF e.g那样处理它