2013-07-16 67 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); 
});