2012-10-07 13 views
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功能,第一回真正的函數,然後返回值jQuery.post功能。爲什麼?jQuery的提交表單要求使用Ajax

我檢查並提交,首先返回true,如果你停止提交,那麼你釋放該帖子返回值。發佈工作正常,但我不明白爲什麼功能checkEmail不會等到發佈後返回值並繼續直到結束返回true。

+1

你的代碼缺少'}'和'})'。如果您正確縮進代碼並傳遞一個快速的jshint,您甚至可以在發佈問題之前就能夠捕獲這些錯誤。 – elclanrs

回答

1

因爲jQuery.post()函數是AJAX請求,並且AJAX中的第一個A代表異步。這正是異步的,它不會在等待響應時停止代碼執行。它觸發請求,然後立即轉到執行請求的行後面的任何代碼,在這種情況下爲return true聲明。

0

像安東尼·格里斯特說。 .post是一個異步調用,這意味着它不會等待完成。
我查找了.post方法(http://api.jquery.com/jQuery.post/)。
它基本上是.ajax的快捷方式。你錯過了這裏的失敗方法,所以我會說使用.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; 
    } 
}); 
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; 
    } 
});