0
$('form').submit(function() {
    $.post(url, $(this).serialize(), 'validate');
    return .....;
});

function validate(data) {
    return data;
}

我需要从提交函数返回 validate() 提供的结果(数据)。我怎么做?如何让提交的返回等到ajax返回结果?

4

2 回答 2

0

是的,这个方法看起来很混乱。可能您应该在页面加载期间将变量初始化为 False,并在 validate 函数返回成功数据后将其设置为 true。它可以在这样的条件中设置:

$('form').submit(function(e) {
  if (!postflag) {
         e.preventDefault();
          $.post("foo.php",serialize(),function(data) {
                   if (validate(data)) {
                             postflag = true;
                    }
          });
        }  
    if (postflag) {
        $(this).submit();
     }          
     });
于 2012-06-22T12:14:03.587 回答
0

你不能这样做,因为它是异步的。

你可以这样做:

$('form').submit(function(e) {
    var form = this;
    e.preventDefault(); //Prevent the form from submitting

    $.post(url, $(this).serialize(), function(data){
        if( validate( data ) ) {
            form.submit(); //Now submit the form. Please note `form` is not a jQuery object the event handler is not triggered.
        }
    });
});
于 2012-06-22T11:43:09.693 回答