Javascript Ajax表单提交行为

Javascript Ajax表单提交行为,javascript,php,ajax,Javascript,Php,Ajax,我有一个奇怪的Ajax问题(我不是很擅长,所以所有的问题都是奇怪的…) 我有一个表单需要大量的验证(涉及到大文件),所以我决定实现一个小的Ajax方法,在用户等待时进行验证。 问题是,虽然正确地进行了Ajax调用,但我无法在验证完成后将表单发布到正确的php文件中 表格如下所示 <form id="initialForm" method="post" action="/files/processing.php"> ... <input id="saveForm" cla

我有一个奇怪的Ajax问题(我不是很擅长,所以所有的问题都是奇怪的…) 我有一个表单需要大量的验证(涉及到大文件),所以我决定实现一个小的Ajax方法,在用户等待时进行验证。 问题是,虽然正确地进行了Ajax调用,但我无法在验证完成后将表单发布到正确的php文件中

表格如下所示

<form id="initialForm" method="post" action="/files/processing.php">
...    
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit"/> 
</form>
errorMessages
JSON对象中包含的消息记录到控制台后,表单不会提交到“files/processing.php”。 我相信这是件小事,但我无法让它发挥作用


谢谢大家

您已阻止表单的初始提交。因此,您必须在记录错误后提交它

$(function() {
    var request;
    $("#initialForm").submit(function(e) {
        e.preventDefault();
        var validated = false;
        //flush pending requests
        if (request){request.abort;}
        $.ajax({
            url: 'test.php',
            method: 'POST',
            data: $('#initialForm').serialize()
        }).done(function (response) {  
            var errorMessages = JSON.parse(response);
            console.log(errorMessages['errorTest']);
            if(checkErrorMessages()) { //validate fields
                $('#initialForm').unbind('submit'); //unbind submit if valid
                $('#saveForm').click(); //submit form
            }
        }).fail(function () {
        });    
    });
});

编辑:只有在表单验证成功时,才能解除提交事件的绑定,否则不能解除绑定。您可以使用.success()或.done()函数(两者的作用相同)。但最好使用done(),因为success()可能会从中被弃用。我已经相应地更新了上面的代码。

谢谢rahki4110。我已经尝试过了,但它会导致无限的提交循环。有什么想法吗?是的。对不起,我忽略了。更新了答案。为rahki4110干杯!ajax和javascript是我确信永远不会得到的东西之一。rahki4110,我现在已经编辑了代码(这篇文章也是),并添加了我所需的其他功能。但是,如果检查失败一次,则单击“提交”按钮提交表单而不进行任何进一步检查。有什么想法吗?我尝试在不同阶段解除提交事件的绑定,但没有成功。@horacv:相应地编辑了答案。
$(function() {
    var request;
    $("#initialForm").submit(function(e) {
        e.preventDefault();
        var validated = false;
        //flush pending requests
        if (request){request.abort;}
        $.ajax({
            url: 'test.php',
            method: 'POST',
            data: $('#initialForm').serialize()
        }).done(function (response) {  
            var errorMessages = JSON.parse(response);
            console.log(errorMessages['errorTest']);
            if(checkErrorMessages()) { //validate fields
                $('#initialForm').unbind('submit'); //unbind submit if valid
                $('#saveForm').click(); //submit form
            }
        }).fail(function () {
        });    
    });
});