如何在另一个函数中使用ajax post方法?

时间:2014-09-18 08:51:54

标签: php jquery ajax forms

我正在尝试使用ajax post提交表单。在我检查所有表单数据是否正确之前,如果是,表单将被提交。可以告诉我为什么表单没有提交?

HTML:

<form id="formElem" name="formElem" action="" method="post">
    <fieldset class="step">
        <legend>Account</legend>
        <p>
            <label for="password">Password</label>
            <input type="password" name="uPassword" id="uPassword" value="<?=$uPassword;?>" AUTOCOMPLETE=OFF />
        </p>
        <p>
            <label for="password">Verify Password</label>
            <input type="password" name="uVPassword" id="uVPassword" value="<?=$uVPassword;?>" />
        </p>
        <p class="submit">
            <button id="registerButton" type="submit">Register</button>
        </p>
    </fieldset>
</form>

jQuery代码:

$('#registerButton').bind('click', function () {
    if ($('#formElem').data('errors')) {
        alert('Please correct the errors in the Form');
        return false;
    } else {
        $(function () {
            $("#formElem").on("submit", function (event) {
                event.preventDefault();

                $.ajax({
                    url: "somefile.php",
                    type: "post",
                    data: $(this).serialize(),
                    success: function (d) {
                        alert(d);
                    }
                });
            });
        }); ///end of func

        return true;
    }
});

4 个答案:

答案 0 :(得分:1)

为什么你有event.preventDefault();在提交功能的开头?这似乎就是问题所在。

答案 1 :(得分:1)

您不需要点击处理程序,您可以在提交处理程序中检查有效性

jQuery(function ($) {
    $("#formElem").on("submit", function (event) {
        event.preventDefault();

        if ($(this).data('errors')) {
            return;
        }

        $.ajax({
            url: "somefile.php",
            type: "post",
            data: $(this).serialize(),
            success: function (d) {
                alert(d);
            }
        });
    });
})

答案 2 :(得分:0)

您可以点击按钮调用ajax。对于任何错误,它将进入if条件,否则成功提交表单..

$('#registerButton').bind('click', function () {
    if ($('#formElem').data('errors')) {
        alert('Please correct the errors in the Form');
        return false;
    }
           $.ajax({
                    url: "somefile.php",
                    type: "post",
                    data: $(this).serialize(),
                    success: function (d) {
                        alert(d);
                    }
                });
       return true;
 }); ///end of func

答案 3 :(得分:0)

$(function() { /*code here */ });在准备好使用DOM时执行该函数。这意味着此函数被分配给onDocumentReady事件,该事件仅发生一次(当页面加载时),并且您在此事件之后分配一个函数,因此永远不要执行。

这个函数是一样的$("#formElem").on("submit", function (event) {});不要立刻告诉她,但你是否创建了一个关于该事件onSubbmit的句柄。