为什么jquery两次提交我的ajax表单?

时间:2013-02-09 01:40:27

标签: ajax jquery

当我提交表单时,如果php不喜欢falsefield1中包含的值,则会返回field2。如果它确实喜欢这些字段,那么它将返回true。如果用户提交表单并且php返回false,则会出现警报。关闭警报窗口后,如果用户立即将新(好)数据输入这些字段并再次提交表单,则表单以某种方式提交两次。为什么?我该如何解决这个问题?

$("form#myForm").on('submit',function() 
{
    $.ajax(
    {
        type: "POST",
        url: 'myfile.php',
        dataType: 'html',
        data: 
        {
            field1:$("input[name=field1]").val(),
            field2:$("input[name=field2]").val()
        },
        success: function(data)
        {
            if(data == false) 
            {
                alert('hello world');
            } 
            else 
            {
                // stuff
            }
        }
    });
    return false;
});

3 个答案:

答案 0 :(得分:4)

2014年提出了同样的问题(jquery ajax form submits twice)。

e.stopImmediatePropagation();本身适用于按钮和锚点链接但在提交表单时并不适合我(与上面的Nancy代码完全相同)。

我必须在我的ajax帖子之前添加<specFlow> <unitTestProvider name="MSTest"></unitTestProvider> </specFlow> 。这阻止了ajax调用被提交两次。

答案 1 :(得分:2)

return false

之前添加此代码
$('#myForm').unbind('submit');
 return false;

答案 2 :(得分:1)

因为您正在执行ajax帖子,所以您需要禁用默认的提交按钮行为。见http://api.jquery.com/event.preventDefault/