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,如果你停止提交,那么你释放那个帖子返回值。Post 工作正常,但我不明白为什么函数checkEmail不等到 post 返回值并一直持续到结束才返回 true。

4

3 回答 3

1

因为jQuery.post()函数是一个AJAX请求,而AJAX中的第一个A代表异步。这正是异步的含义,它在等待响应时不会停止代码执行。它触发请求,然后立即转到发出请求的行之后的任何代码,在这种情况下是您的return true语句。

于 2012-10-07T22:00:12.103 回答
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;
   }
});
于 2012-10-07T22:51:49.627 回答
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 回答