2017-04-04 7 views
0

私はajaxリクエストを実行していますが、結果が戻ったら、続行するか、フォームを送信しないかを選択します。メールがあるかどうかを確認しています。成功した場合のAjaxコール関数戻り値falseが機能しない

問題私はsuccess:から戻り値falseを移動しましたが、そこでは機能していなかったため、別の機能では機能しませんでした。私はalert("FALSE");を手に入れますが、フォームはまだ送信されません。

$.ajax({ 
    type: "POST", 
    url: "/ajax/checkdata.php", 
    data: "email="+email, 
    success: function(data){ 
    var returned = true; 
    if (data == "Email Exists") { 
     returned = false; 
    } else { 
    } 
    emailModal(returned); 
    } 
}) 

function emailModal(result){ 
    if (result) { 
    alert("TRUE"); 
    } else { 
    alert("FALSE"); 
    return false; 
    } 
} 
+1

呼び出しが非同期であるため、その時点でフォームに何かを返すには遅すぎる – adeneo

+0

これをどのように非同期として実現できますか:falseは前に違いを生じさせていないようです –

+0

クリアするには、フォームの提出時にAJAXリクエストを実行し、そのリクエストの結果が提出を続けることが許されるべきかどうか、それは正しいのですか? –

答えて

3

あなたはいつも提出からフォームを防ぐ必要があるだろう、その後、電子メールの把握天気をチェックしてエラーを表示したりネイティブがハンドラに

$('form').on('submit', function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     type: "POST", 
     url: "/ajax/checkdata.php", 
     data: {email : email}, 
     context: this 
    }).done(function(data) { 
     if (data == "Email Exists") { 
      alert(data); 
     } else { 
      this.submit(); 
     } 
    }); 
}); 
を提出使用してフォームを送信します
+0

素晴らしい作品を扱う!早く答えをマークします! –

+0

あなたは大歓迎です! – adeneo

関連する問題