我刚开始使用jquery编写AJAX函数。我在这里打电话给myfunction()
。 check.php返回{"count":1}
或{"count":0}
,其中myfunction始终返回retval=false
。但是对于{"count":1}
,它应该返回true。我不知道我哪里错了。以下是我正在使用的代码。
function myfunction(){
var retval=false;
if($('#tag').val() != ''){
var query=$( "#tag" ).val();
$.getJSON("check.php",{
q: query
},function(data){
if(data.count==0){
$('#formerrormsg').html('Error msg');
}
else{
retval=true;
}
});
}
return retval;
}
请帮我理解这一点。
答案 0 :(得分:2)
这是因为,$.getJSON(..)
异步。以下是jQuery doc关于你传递的第三个参数(function(data){...}
)的说法:
成功(data,textStatus,jqXHR):如果请求成功,则执行回调功能。
当AJAX调用成功时,执行将retval
设置为true的函数;不是在你拨打myfunction()
有两种方法可以解决这个问题:
答案 1 :(得分:0)
这是一个AJAX(异步)请求,因此{AJ}成功函数执行前会返回return retval;
,因此总是返回false。在返回并使用retval
之前,您需要更改实施以等待该请求。