使用Javascript / JQuery提交我的某些形式,因此不会发生页面刷新。
但是我注意到我的两台计算机之间的浏览器有一种奇怪的行为。 在一台计算机(以及我测试过的所有浏览器)上,我的表单提交按预期执行。 我的另一台电脑(Mac)很受欢迎。我将提交表单,它将进行典型的POST刷新。所以浏览器刷新,我在Url地址栏中看到我的按钮文本。
- 我的电脑的浏览器不会这样做。
除非我发疯,否则我可以扣除的是我的Mac上的浏览器没有正确执行javascript。但我更准备期待我的编码方面出错。
我是否正确确保表单未通过我的Javascript提交?
<form id="norefreshForm">
<!--more form fields here -->
<input type="submit" name="button" value="Submit Me" />
</form>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$.ajaxSetup({
global:false,
cache:false,
type:"POST",
url:"<?=$_SERVER['REQUEST_URI'];?>",
timeout:120000
});
$("form#norefreshForm").submit(function(){
$.ajax({ success:function(response){ alert("Submitted"); } });
return false;
});
});
</script>
答案 0 :(得分:0)
试试这个:
$("form#norefreshForm").submit(function(e){
$.ajax({ success:function(response){ alert("Submitted"); } });
e.preventDefault();
});
答案 1 :(得分:0)
实际上某些浏览器应该e.preventDefault()
代替return false;
而我真的不知道为什么。但它发生在我身上很多。所以,你可以这样做:
$("form#norefreshForm").submit(function(){
e.preventDefault();//should be at the very top
$.ajax({ success:function(response){ alert("Submitted"); } });
});
});
答案 2 :(得分:0)
当你只使用jQuery时,返回false应该足够了。 (不是100%肯定的mac)
但如果您还编写了纯JavaScript,那么您可能还必须使用preventDefault
或stopPropagation
。
在IE的情况下它更加不同。有时您必须使用window.event.returnValue = false;
因此,所有这些的组合将正常发挥作用。
请用
替换return false
语句
if (eventObject.preventDefault) {
eventObject.preventDefault();
} else if (window.event) /* for ie */ {
window.event.returnValue = false;
}
return false;
这适用于PC和MAC
快乐的编码!!!
答案 3 :(得分:0)
在表单中尽量不要使用提交按钮。相反,您可以使用一个简单的按钮,并在单击此按钮时绑定ajax调用。
这样做的原因似乎是你在同一时间通过提交按钮和另一个你自己的ajax函数发出两个请求。
此外,第一次提交失败,因为您尚未指定表单的操作属性。