火狐返回假;(防止默认();)和 window.location.reload();一起
Firefox return false; (preventDefault();) and window.location.reload(); together
我认为这是一个非常愚蠢的问题,但经过几个小时的谷歌搜索 - 我不知道或解决方案。关键是我需要在我的网站上处理"点击"事件后重新加载页面。在chrome''opera中,它可以毫无问题地工作。但是在火狐中我有一些错误。我的JS代码与注释:
$('#project_create').click(function() {
var projectname = $("#project_name").val();
var projectdescription = $("#project_description").val();
$.post("projects/add_project.php", {
project_name: projectname,
project_description: projectdescription
});
$("#create_project_form").hide("slow");
$("#project_list").show("slow");
//return false; - if it uncomment, all work, but next page reloader doesn't work.
window.location.reload(); //but if it's work, FireFox doesn't send $.post-query
});
我需要工作摊位方法,因为点击后 - 脚本放入 $_SESSION['my_var'] 一些变量,并且它的变量仅在重新加载页面后可用。也许还有其他方法可以做到这一点?正如我所理解的那样,火狐和 preventDefault() 的功能中存在问题;
谢谢!
问题只是您在执行 ajax 请求之前重新加载页面。
尝试在 ajax 成功回调处理程序中重新加载页面:
$.post("projects/add_project.php", {
project_name: projectname,
project_description: projectdescription
}, function(){
window.location.reload();
});
并删除您的旧window.location.reload()
当你做一个return
时,该行之后的代码将不再被访问,被认为是"死代码"。人们不会简单地将代码放在return
之后。
另一个是使用 return false
来阻止默认默认操作时存在问题。它可以防止委派/冒泡。在 DOM 树中挂接在较高位置的事件处理程序(尤其是挂接on()
的事件处理程序)将不会执行。如果授权很重要,请不要使用它。
如果您的目标是阻止链接的默认操作并在 JS 中执行操作,请改用event.preventDefault
。event
对象作为处理程序中的第一个参数传入。
$('#project_create').click(function(event) {
event.preventDefault();
// rest of the code
});
除了其他答案建议的内容外,您还可以使用 setTimeout
异步执行 location.reload
方法:
setTimeout(function() { location.reload(); }, 1);
return false;
编辑:当然,运行异步AJAX请求并立即重新加载页面的整个想法是有缺陷的,因为当您重新加载页面时,AJAX请求可能尚未完成。
因此,您应该按照接受的答案的建议使用回调。或者,您可以使用同步 AJAX 请求,但这会在请求完成之前冻结执行,这通常是不可取的。
- window.location替换并传递URL历史记录条目中的变量
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- window.location使用jquery mobile实现chrome跳转
- Windows.Open 在 window.Location 工作时不起作用
- 如何将所有作业自定义到window.location.href
- window.location未刷新到现有URL
- 如果window.location.href.indexOf('player=1')添加样式
- 在$state.go之后执行$window.location.reload(true)
- javascript window.location在检查firebug时给了我一个错误的url路径
- angularjs 中 $window.location.reload() 和 $route.reload() 之间的区
- 在AJAX中使用window.location.replace'成功'回调
- IE中不支持JQuery window.location.hash
- PhoneGap如何在更改window.location/document.location后保持Javascript的
- 如何在更改window.location后停止执行
- 警报中的window.location必须重定向到上一页
- 如何在窗体操作或window.location(PHP)中使用数据切换
- 正在将目标添加到window.location
- window.location.htm无法在chrome扩展中工作
- 可以'当window.location.href时,无法从javascript获取post值
- 基于AJAX的网站中的JS window.location