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 に答える