1

ユーザーがフォームを送信すると、次のようにメールアドレスが存在するかどうかをajaxに確認させたい

$.post("checkemail.php", {email: email})

送信するかどうかを選択する値に応じて (preventdefault)

ただし、値を返す前にフォームが送信されます。私は次のことを試しました:

$.when($.post("inc/checkemail.php", {email: email})).done(function(result) {
 // code here
}

しかし、私はこれを正しく理解できないようです。私は何を間違っていますか?

事前に助けてくれてありがとう、皆さんはいつも素晴らしいです!

4

3 に答える 3

4

投稿が何を返すかに関係なく、デフォルトの動作を停止することは常に行われるべきです。「完了」した場合にのみ、フォームを送信することを決定する必要があります。

$('form').on('submit', function(e) { 
  e.preventDefault()
  $.post('checkemail.php', {email: email})
  .done( function(result){
    // check response to see if the email does not exist
    $('form').off('submit') // We don't want to stop the submission anymore.
    $('form').submit()
  })
})

編集:また、 $.post は遅延オブジェクトのタイプを返すため、 $.when 呼び出しは不要であることに注意してください。

于 2012-12-08T18:37:01.287 に答える
1

checkmail.phpからの応答に依存するコードを$.postコールバックに入れます。

$.post("checkemail.php", {email: email}, function(result){
    // "result" = response from checkmail.php
    ...
});

乾杯

于 2012-12-08T18:32:28.510 に答える
0
$.post("checkemail.php", {email: email}, function(data, textStatus, jqXHR) {
    // this gets executed when the AJAX has finished and had succes.
});

ドキュメントから直接:http://api.jquery.com/jQuery.post/

于 2012-12-08T18:33:46.853 に答える