为什么我的函数的返回值总是为假
这是我的功能:
function checkUsername(username) {
var ret=false;
$.ajax({
type: "POST",
url: "user_validate.php",
async: true,
data: "username="+username,
success: function(data){
if(data == 0){
ret = true;
}else{
ret = false;
}
},
error:function() {
alert("ERROR");
}
});
return ret;
}
var ret是不是设置了值? 有什么问题..? 谢谢之前..!
答案 0 :(得分:2)
答案 1 :(得分:0)
因为AJAX调用是异步的,所以在分配之前返回ret
的值。
使用回调方法处理结果:
function checkUsername(username, callback) {
var ret=false;
$.ajax({
type: "POST",
url: "user_validate.php",
async: true,
data: "username="+username,
success: function(data){
callback(data == 0);
},
error:function() {
alert("ERROR");
}
});
}
用法:
checkUsername(username, function(success){
if (success) {
alert('User name is valid.');
} else {
alert('User name is not valid.');
}
});
答案 2 :(得分:0)
你对这里的事情范围有点困惑。 ajax调用是异步的,所以当它回答时,它不再与调用它的函数有任何关系。你真正想要做的是设置某种事件监听器或(我的首选方法)回调。
另外,请帮自己一个忙,并使用缩短的语法$ .post():http://api.jquery.com/jQuery.post/
function checkUsername(username) {
$.post("user_validate.php", "username=" + username, function(data) {
if (data == 0) {
// Update DOM or element, or whatever you want to do
} else {
// Handle negative result
}
});
}