jQuery提交表单使用ajax调用函数

时间:2012-10-07 21:56:44

标签: javascript jquery

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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;
   }
});

答案 2 :(得分: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;
    }
});