$('form').submit(function() {
$.post(url, $(this).serialize(), 'validate');
return .....;
});
function validate(data) {
return data;
}
送信関数から、validate()が提供する結果(データ)を返す必要があります。それ、どうやったら出来るの?ajaxが結果を返すまで送信の戻りを待機させる方法は?
$('form').submit(function() {
$.post(url, $(this).serialize(), 'validate');
return .....;
});
function validate(data) {
return data;
}
送信関数から、validate()が提供する結果(データ)を返す必要があります。それ、どうやったら出来るの?ajaxが結果を返すまで送信の戻りを待機させる方法は?
ええ、方法は紛らわしいようです。ページの読み込み中に変数を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();
}
});
非同期なのでできません。
あなたはこれを行うことができます:
$('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.
}
});
});