Javascript jquery函数总是返回相同的结果

Javascript 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 =

我的自定义javascript函数运行良好。但问题是它总是返回false

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,唯一正确的答案。感谢帮助。它现在工作得很好。