从表单提交函数中进行jQuery AJAX调用

时间:2013-05-17 17:27:38

标签: javascript jquery

长话短说:

  1. 我有一个HTML表单,并在onSubmit事件上附加了一个jQuery函数。
  2. 在onSubmit函数内部,我需要进行一次AJAX调用,并根据响应更新表单元素。
  3. 示例代码:

    $("#theForm").submit(function() {
        $.ajax({
            url: theUrl,
            type: "POST",
            data: theData
        }).done(function(theResponse) {
            $("#someInput").val(theResponse)
            $("#theForm").submit()  // [2] Submit the form now
        }).fail(function(jqXHR, textStatus) { 
            alert("Failure") 
        })
        return false  // [1] Prevent submission prior to AJAX call completing
    })
    

    我的问题是这会产生无限循环。

    此函数的最外层返回false,以防止在AJAX调用结束之前提交表单。在AJAX调用成功完成后,我试图在done()处理程序中实际提交表单。但是,这只是递归地调用整个onSubmit函数。

    如何在onSubmit处理程序中嵌套一个AJAX调用...这样决定是否允许提交是由嵌套的AJAX函数驱动的,而不是它的封闭处理函数?

1 个答案:

答案 0 :(得分:3)

你的[2]部分需要直接在表格上发生。

$("#theForm")[0].submit()

这将绕过jQuery绑定事件。