jQuery检查返回undefined

我在jQuery方面的经验有限,我一直在寻找答案,但似乎无法找到答案。

此函数基于get返回false或true。 现在我的问题是,如果我获取数据,函数’可用性’不会返回false也不会返回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; } }); } 

jQuery.get创建一个AJAX请求。 这些都是异步的。 您无法将AJAX回调中的值return给调用函数。 在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 } 

JQuery是Async脚本语言,因此当您调用此方法时,编译器不会等待获取返回值。

当你调用Availablity(); 然后off-course Ajax get请求发送到test.php,同时编译器不返回你的方法和assign变量似乎未定义。

要防止出现此问题,您需要创建一个回调函数而不是简单地返回该值。 查看没有回调的 示例和回调示例

试试这段代码:

 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); });