变量的jquery问题

时间:2011-05-30 01:15:52

标签: jquery variables

  

可能重复:
  Why is this global variable not being changed???

嗨,请使用此代码通过ajax验证我的应用:

        var myAuth = false;
        $.ajax({
             type: 'POST',
             url: 'loading.php',
             data: { token: 123456789},
             success: function(data){
               if (data.response == 'OK'){
                    myAuth = true;
               }else{
                    myAuth = false;
               }
             }
           });     

if (myAuth == true){
do something
}

为什么myAuth在响应正常后没有得到值?

1 个答案:

答案 0 :(得分:2)

因为XHR是异步运行的(以示例中的方式使用)。

您需要将该代码放在success回调中。

此时,一旦发出请求就会评估条件,而不是在请求完成时评估。因此,myAuth始终设置为其初始值false

另一种方法是使请求同步,但这会在请求打开时锁定浏览器UI,因此被认为是不好的做法。