jQuery函数返回true或false,只返回false而其全部
我不知道如何解决它和错误。
到目前为止,我得到了这个代码:
onclick功能:
$(document).on('click', '.founditems', function (e) {
var $this = $(this)
var k = $this.attr('href');
if (checkUserSystem(k) == true) {
alert("good");
} else {
alert("bad");
}
});
ajax功能:
function checkUserSystem(k) {
var starttime = $.trim($('#checkusersystemstartime').val());
var k = k;
var dataString = 'k=' + k + '&starttime=' + starttime;
$.ajax({
type: "POST",
url: "r.php?proc=sendCp",
data: dataString,
dataType: 'json',
beforeSend: function () {
},
complete: function () {
},
success: function (data) {
if (data.message == false) {
return false;
} else if (data.cblocked == true) {
return false;
} else {
return true;
}
}
});
return false;
}
当函数完美运行并且php返回true时,该函数总是返回false, 如果我删除return false;在ajax代码的最后,它将返回undfiend而不是true任何想法?
感谢。
答案 0 :(得分:4)
您必须阅读异步执行。当ajax调用完成时运行成功块,但在$ .ajax()调用之后,代码的执行将立即继续。
未定义错误的原因是该方法不会返回任何内容,除非您使用“return false”调用。
您可以将警告true / false部分作为函数参数,或者您必须查看 在ajax调用的同步版本。
答案 1 :(得分:1)
您也可以像这样使用成功部分
function (data) {
if (data.message) {
return true;
} else if (data.cblocked) {
return false;
} else {
return false;
}
}
答案 2 :(得分:1)
您不能使用“if(checkUserSystem(k)== true)”,因为您的ajax请求是异步请求。 它的意思是 在ajax请求完成之前,checkUserSystem函数将始终返回“false”。
我认为如果你在ajax请求完成后必须做某事,你应该在ajax.success函数中执行:
$(document).on('click','.founditems',function(e){
var $this=$(this)
var k = $this.attr('href');
checkUserSystem(k);
});
function checkUserSystem(k){
var starttime = $.trim($('#checkusersystemstartime').val());
var k = k;
var dataString = 'k='+ k + '&starttime=' + starttime;
$.ajax({
type: "POST",
url: "r.php?proc=sendCp",
data: dataString,
dataType:'json',
beforeSend: function(){
},
complete:function(){
},
success:
function(data){
if(data.message == false){
alert("good");
}else if(data.cblocked == true){
alert("good");
}else{
alert("good");
}
}
});
return false;
}