0
jQuery(document).ready(function(jQuery) {
    function checkEmail(email){
         jQuery.post('someroute.php',
              {email:eamil},
                  function(data){
                                         if(data==error){
                                                return false;
                                         }
              );
      return true;
}

jQuery('#myform').submit(function(){
// como code and at the momment this
var result true;
//then I check email
var email = ('#myemail').val();
result =  checkEmail(email);
return result;
});

問題は、これ、checkEmail関数、最初に true を返し、次に値jQuery.post関数を返すことです。なんで?

私はチェックして送信し、最初にtrueを返します。送信を停止すると、その投稿を解放して値を返します。checkEmailPost は正常に動作しますが、関数が post が値を返すまで待機せず、最後まで true を返すまで続行する理由がわかりません。

4

3 に答える 3

1

jQuery.post()関数は AJAX リクエストであり、AJAX の最初の A は非同期を表すためです。それがまさに非同期であり、応答を待っている間、コードの実行を停止しません。リクエストを発行すると、すぐにリクエストを行った行の後の任意のコード (この場合はreturn trueステートメント) に移動します。

于 2012-10-07T22:00:12.103 に答える
0

@ user1727336 : こんにちは!}コードを編集して、不足している とを追加することをお勧めします});。ここに修正があります:

// enter code here
jQuery(document).ready(function(jQuery) {
    function checkEmail(email){
        jQuery.post('someroute.php', {email:eamil},
        function(data){
            if(data==error){
                return false;
            }
        });
        return true;
    }
});
于 2012-10-07T22:58:54.253 に答える
0

アンソニー・グリストが言ったように。.post は非同期呼び出しであり、終了を待たないことを意味します。
.post メソッド (http://api.jquery.com/jQuery.post/) を調べました。
基本的には .ajax のショートカットです。ここには fail メソッドがありませんので、.ajax 呼び出しを使用してください。

var value = 1;
var handlerUrl = "someroute.php";

//Do the Ajax Call
jQuery.ajax(
{
   url: handlerUrl,
   data: { email:eamil },
   type: 'POST',
   success: function (data)
   {
   return true;
   },
   error: function (jxhr, msg, err)
   {
      return false;
   }
});
于 2012-10-07T22:51:49.627 に答える