从函数返回带有回调的返回值(嵌套函数)?

时间:2012-06-22 11:38:24

标签: jquery

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

function validate(data) {
    return data;
}

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

2 个答案:

答案 0 :(得分: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.
        }
    });
});

答案 1 :(得分: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();
     }          
     });