$('form').submit(function() {
$.post(url, $(this).serialize(), 'validate');
return .....;
});
function validate(data) {
return data;
}
我需要从submit函数返回validate()提供的结果(数据)。我怎么做?如何返回提交等待直到ajax返回结果?
答案 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();
}
});