Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在第一次失败条件后提交,为什么if语句中的ajax表单会提交两次?_Ajax_Forms_Ajax Forms - Fatal编程技术网

如果在第一次失败条件后提交,为什么if语句中的ajax表单会提交两次?

如果在第一次失败条件后提交,为什么if语句中的ajax表单会提交两次?,ajax,forms,ajax-forms,Ajax,Forms,Ajax Forms,考虑下面的代码。如果myField1不等于myField2,则会出现警报。当我单击警报弹出窗口上的OK时,我的表单仍然在那里,所有字段仍然填充着我以前输入的数据。但是,当我修改字段,使myField1等于myField2,然后提交表单时,实际上提交了两次!为什么会这样 $(document).ready(function(){ $("#myForm").submit(function() { var myField1 = $('#myID1).val(); var myField

考虑下面的代码。如果
myField1
不等于
myField2
,则会出现警报。当我单击警报弹出窗口上的OK时,我的表单仍然在那里,所有字段仍然填充着我以前输入的数据。但是,当我修改字段,使
myField1
等于
myField2
,然后提交表单时,实际上提交了两次!为什么会这样

$(document).ready(function(){
$("#myForm").submit(function() {
    var myField1 = $('#myID1).val();
    var myField2 = $('#myID2).val();
    if(myField1 == myField2)
    {
        $.ajax({
            type: "POST",
            url: 'myFile.php',
            dataType: 'html',
            data: {myData:myField1,
                   myData2:myField2},
            success: function(data){
                alert(data);
            }
        });
        return false;
    }
    else
    {
        alert('These two fields are not equal!)
    }
});
});

您的提交事件将触发表单的提交操作,除非您阻止它这样做。运行AJAX调用并不能防止这种情况发生。你需要自己阻止这一切

你需要:

$("#myForm").submit(function(event) {
    event.preventDefault()
...

您的提交事件将触发表单的提交操作,除非您阻止它这样做。运行AJAX调用并不能防止这种情况发生。你需要自己阻止这一切

你需要:

$("#myForm").submit(function(event) {
    event.preventDefault()
...

好的,我在另一个问题上发现了这个,它解决了这个问题:

$('#myForm').unbind('submit').bind('submit',function() {
    // do stuff here...
});

通过解除事件绑定,然后重新绑定,表单不再提交两次。

好的,因此我在另一个问题上发现了这一点,它解决了问题:

$('#myForm').unbind('submit').bind('submit',function() {
    // do stuff here...
});

通过解除事件绑定,然后重新绑定,表单将不再提交两次。

如果不修改值并再次提交,则另一个警报是否会出现两次?不,不会出现两次。如果不修改值并再次提交,则另一个警报是否会出现两次?不,不会出现两次。-1这不足以阻止“提交”事件在第二次发布时,将出现一个新的bind()@Nancy Collier的解决方案已经过测试,并且100%有效。-1它不足以防止“提交”事件。在第二次发布时,将出现一个新的bind()@Nancy Collier的解决方案经过测试,效果100%。