JQuery和JS变量

Bou*_*nce 2 javascript jquery

与JQuery和JS变量有点误解.简单的例子:

function someFunc(){

   var flag = true;

    $(function(){
        $.post("/some/address/", {} ,function(data){
            if( data == false){             
                flag = false;
            }
        });
    });
   if(flag == false){
      return false;
   }    
} 
Run Code Online (Sandbox Code Playgroud)

主要问题是Jquery函数中变量标志的可访问性.我总是得到相同的标志值等于true.如何做到这一点?如何使全局变量对JS和JQuery可见?

Jac*_*son 7

实际上,我不认为你的问题是范围之一; 我认为你的问题是该post函数是异步的.也就是说,它会在服务器上获取数据,并在数据返回时运行回调函数(更新标志)(这可能需要一段时间).但同时,周围的功能还在继续; 它不等待post返回.因此在外部函数返回后发生标志更新.

  • @Marcel - 我不推荐`async:false`,但没有注意到它会锁定浏览器,直到收到响应,这可能是一个问题.还有其他补救措施不具备潜在的破坏性.如果锁定浏览器是可以接受的,那么`async:false`是一个很好的解决方案.:O) (2认同)