Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
Javascript 我的提交表格没有';单击“提交”按钮时,不会第一次发送,但会第二次发送_Javascript_Jquery_Form Submit - Fatal编程技术网

Javascript 我的提交表格没有';单击“提交”按钮时,不会第一次发送,但会第二次发送

Javascript 我的提交表格没有';单击“提交”按钮时,不会第一次发送,但会第二次发送,javascript,jquery,form-submit,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

我有一个表单,我用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
s,但什么也没发生(表单未提交,页面未刷新)!但是第二次,表单发送并刷新页面。为什么?


另外,第二次我在浏览器中看不到这两个
警报。

我建议您保留一个全局变量isok='',如果所有结果都是.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");
        }
    }
});
});

event.preventDefault();??我想在ajax验证未完成之前停止提交,然后提交,然后我必须添加
event.preventDefault()首先,这是错误的吗?JS可能在第一次运行后崩溃,再也没有机会运行了。根据您的代码注释,您忘记了结束括号。谢谢,我忘记了这里的括号,但括号在我的真实代码中是正确的。(我在问题中更正了这一点),因为如果我删除
unbind()
,那么程序将进入循环,每次
thisForm.submit()
call call self and never form submite结果值是什么——您确定它即将出现的结果。第一次单击中isOK=='1'。。如果可能,提供一些JSFIDLE演示。