2013-07-16 65 views
0

我在jQuery的经验是有限的,我周围中搜索的答案,但似乎无法找到它。jQuery的检查返回undefined

这个函数返回一个或真或假基于一个get。现在我的问题是,如果我得到我的数据,函数'可用性'不会返回一个错误,也不会返回true。

这是代码。

function Availability(){ 
    var email = jQuery('#emailRegister').val(); 
     jQuery.get("test.php", {email: email}) 
     .done(function(data) { 
      if(data == 'true'){ 
      jQuery(".warningEmailDuplicate").hide(); 
      return true; 
      }else if(data == 'false'){ 
      jQuery(".warningEmailDuplicate").show(); 
      return false; 
     } 
    }); 
} 
+0

http://stackoverflow.com/questions/5316697/jquery-return-data-after-ajax-call-success –

回答

1

jQuery.get创建一个AJAX请求。这些是异步的。您不能return从AJAX回调到调用函数的值。在HTTP请求完成之前,函数将退出,不返回任何内容。

你需要重写代码以使用回调:

function Availability(){ 
    var email = jQuery('#emailRegister').val(); 
     jQuery.get("test.php", {email: email}) 
     .done(function(data) { 
      if(data == 'true'){ 
      jQuery(".warningEmailDuplicate").hide(); 
      AvailabilityResult(true); 
      }else if(data == 'false'){ 
      jQuery(".warningEmailDuplicate").show(); 
      AvailabilityResult(false); 
     } 
    }); 
} 

function AvailabilityResult(available) { 
    // *available* will be true or false 
    // do with this value what you wanted to do with the return value from Availability 
} 
+0

完美的事情,谢谢你你的时间! – Jeremy

0

jQuery是异步的脚本语言,所以,当你调用此方法编译器不会迫不及待地想返回值。

当你调用有效性的影响();然后偏离Ajax get请求发送到test.php,同时编译器不会从您的方法中返回任何内容,并且assign变量似乎未定义。

为了避免这个问题,你需要创建一个回调函数,而不是简单的返回值。 看到example with no callbackexample with callback

试试这个代码:

function Availability(callback){ 
    var email = jQuery('#emailRegister').val(); 
     jQuery.get("test.php", {email: email}) 
     .done(function(data) { 
      if(data == 'true'){ 
      jQuery(".warningEmailDuplicate").hide(); 
      callback(true); 
      }else if(data == 'false'){ 
      jQuery(".warningEmailDuplicate").show(); 
      callback(false); 
     } 
    }); 
} 
//calling function 
Availablity(function(status){ 
var available = status; 
    alert(available); 
});