ajax返回后提交表单

时间:2012-12-08 18:29:18

标签: jquery ajax forms

当用户提交表单时,我希望ajax使用以下

检查电子邮件地址是否存在
$.post("checkemail.php", {email: email})

取决于我将选择提交或不提交的值(防止默认)

但是表单在返回值之前提交。 我尝试过以下方法:

$.when($.post("inc/checkemail.php", {email: email})).done(function(result) {
 // code here
}

然而我似乎无法做到这一点。我做错了什么?

感谢您提前提供任何帮助,你们总是很棒!

3 个答案:

答案 0 :(得分:4)

无论帖子返回什么内容,都应该始终停止默认行为。只有在“完成”时才决定提交表格:

$('form').on('submit', function(e) { 
  e.preventDefault()
  $.post('checkemail.php', {email: email})
  .done( function(result){
    // check response to see if the email does not exist
    $('form').off('submit') // We don't want to stop the submission anymore.
    $('form').submit()
  })
})

编辑另外,请注意$ .post会返回一种延迟对象,因此$ .when调用是不必要的。

答案 1 :(得分:1)

checkmail.php回调中放置取决于$.post响应的代码:

$.post("checkemail.php", {email: email}, function(result){
    // "result" = response from checkmail.php
    ...
});

干杯

答案 2 :(得分:0)

$.post("checkemail.php", {email: email}, function(data, textStatus, jqXHR) {
    // this gets executed when the AJAX has finished and had succes.
});

直接来自文档:http://api.jquery.com/jQuery.post/