Javascript jquery函数总是返回相同的结果
我的自定义javascript函数运行良好。但问题是它总是返回falseJavascript jquery函数总是返回相同的结果,javascript,jquery,Javascript,Jquery,我的自定义javascript函数运行良好。但问题是它总是返回false function uniqueChk() { var flagV = false; jQuery.post("<?=base_url()?>index.php/authentication/chksid", { sid: jQuery('#sid').val() }, function( data ) { if(data =
function uniqueChk()
{
var flagV = false;
jQuery.post("<?=base_url()?>index.php/authentication/chksid",
{
sid: jQuery('#sid').val()
},
function( data )
{
if(data == 'ok')
{
jQuery("#sid").removeClass("error");
jQuery("#er_sid").html("");
flagV = true;
}
else
{
jQuery("#sid").addClass("error");
jQuery("#er_sid").html("This Student ID already in the database. Contact Admin if you have not done first time");
}
});
return flagV;
}
函数uniqueChk()
{
var flagV=假;
jQuery.post(“index.php/authentication/chksid”,
{
sid:jQuery('#sid').val()
},
功能(数据)
{
如果(数据=='ok')
{
jQuery(“#sid”).removeClass(“错误”);
jQuery(“#er#uid”).html(”;
flagV=真;
}
其他的
{
jQuery(“#sid”).addClass(“错误”);
jQuery(“#er#u sid”).html(“此学生ID已在数据库中。如果您没有第一次这样做,请与管理员联系”);
}
});
返回flagV;
}
如果我得到
数据的值
“ok”,它将从sid中删除类错误,但仍然返回false
尝试类似的操作
function uniqueChk()
{
var flagV = false;
$.ajax({
type: 'POST',
url: "<?=base_url()?>index.php/authentication/chksid",
data: { sid: jQuery('#sid').val() },
success: function(response){
if(data == 'ok'){
jQuery("#sid").removeClass("error");
jQuery("#er_sid").html("");
flagV = true;
} else {
jQuery("#sid").addClass("error");
jQuery("#er_sid").html("This Student ID already in the database. Contact Admin if you have not done first time");
}
},
async:false
});
return flagV;
}
函数uniqueChk()
{
var flagV=假;
$.ajax({
键入:“POST”,
url:“index.php/authentication/chksid”,
数据:{sid:jQuery('#sid').val()},
成功:功能(响应){
如果(数据=='ok'){
jQuery(“#sid”).removeClass(“错误”);
jQuery(“#er#uid”).html(”;
flagV=真;
}否则{
jQuery(“#sid”).addClass(“错误”);
jQuery(“#er#u sid”).html(“此学生ID已在数据库中。如果您没有第一次这样做,请与管理员联系”);
}
},
异步:false
});
返回flagV;
}
默认情况下,所有请求都是异步发送的(即,默认情况下设置为true)。如果需要同步请求,请将此选项设置为false
这意味着您的函数不会等待ajax响应完成。它会在ajax请求完成之前返回它的值。因此,让ajax异步
参考文献
因为您的函数在ajax有机会返回之前返回。这是异步功能的正常行为。然后查看$.deferred。post发生在脚本uniqueChk返回之后。data=='ok'正在按我说的那样工作。它会进入块,但无法在flagVYes中保存true,但您似乎不了解
.post
调用的异步性质…您不能这样做,因为ajax请求是异步的,请尝试在if条件之前警告数据和类型(数据)。+1,唯一正确的答案。感谢帮助。它现在工作得很好。