我的提交表单不是第一次发送,而是在提交按钮点击时第二次发送

时间:2013-11-29 05:30:15

标签: javascript jquery form-submit

我有一个表单,我用ajax检查其值,如果有效,那么发送到另一个页面是index.js

 $("#form").submit(function(event){
    var thisForm = $(this);
    $(".ajaxLogo").show();
    event.preventDefault();

    // do some stuff

    $.ajax({
        url: '/ajax/Check',
        data: data,
        dataType: 'json',
        success:function(result){
            // ....
            // check some situations that if form is not valid don't send the form
            // ....

            if(result.isOK=='1'){
                alert("I am before this line");
                thisForm.unbind('submit').submit(); // send request to '/'
                alert("I am after that line");
            }
        }
    });
});

页面加载时出现问题。我第一次单击提交按钮时,我在浏览器中看到两个alert但没有任何反应(表单不提交,页面不刷新)!但是第二次,表单发送和页面刷新。为什么?

此外,我第二次在浏览器中看不到两个alert

1 个答案:

答案 0 :(得分:0)

我建议你保留一个全局变量isok ='',如果所有result.isok =“1”,则不要执行e.preventDefault();.它不是很简洁的方法,但可以解决问题,继续提交表单,直到完成ajax验证而没有重大的代码更改。

var isok ='';
$("#form").submit(function(event){
var thisForm = $(this);
$(".ajaxLogo").show();
if(isok != '1')
event.preventDefault();

// do some stuff

$.ajax({
    url: '/ajax/Check',
    data: data,
    dataType: 'json',
    success:function(result){
        // ....
        // check some situations that if form is not valid don't send the form
        // ....

        if(result.isOK=='1'){
             isok='1';
            alert("I am before this line");
            thisForm.unbind('submit').submit(); // send request to '/'
            alert("I am after that line");
        }
    }
});
});