使用Javascript提交表单

时间:2013-01-09 06:54:44

标签: javascript jquery forms

使用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>

4 个答案:

答案 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,那么您可能还必须使用preventDefaultstopPropagation

在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函数发出两个请求。

此外,第一次提交失败,因为您尚未指定表单的操作属性。