如何在提交表单之前完成ajax功能

时间:2012-03-30 11:07:30

标签: jquery callback form-submit

当用户点击表单提交按钮时,我需要采取一些涉及更新数据库表的操作。我希望在我现在提交表单之前完成此操作,但它还不起作用。这是代码

// On form submission
$("#profile").submit(function() {
    submitForm(function(result) {
        return result;
    });
});

function submitForm(callback) {
    var dept;
    if (IsEmpty($("input[name=dept_id1]").val())) {
        dept = $("select[name=dept_id]").val();
        $.post("funcs.php", {'dept':dept, op:'select'}, function(d) {
            callback(true);
        });
    } else {
        dept = $("input[name=dept_id1]").val();
        $.post("funcs.php", {'dept':dept}, function(d) {
            callback(true);
        });
    }
}

如果我阻止表单提交,操作将成功完成,但我必须手动转到结果页面才能看到更改。如果我允许表单提交,则更改将不会生效。

我粘贴的代码允许表单在ajax函数之后提交,但它不会在服务器端进行任何更改。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我建议您使用按钮而不是提交表单中的按钮。如果您当前正在使用,例如:

<form id="profile">    
Some form fields
<input type="submit" value="Submit" />
</form>

然后考虑做:

<form id="profile">
Some form fields
<input type="button" onclick="submitForm(submitCallback);" />
</form>

这会阻止您在单击按钮时自动提交表单。您实际上可以在回调函数中提交表单,例如:

function submitCallback() {
    $('#profile').submit();
}

或者那些东西。代码没有经过测试,但它应该是这些内容。

编辑:执行此操作后,您需要将原始代码中的事件处理程序删除为$('#profile')。submit ...否则您将运行两次ajax内容。