Javascript jquery-范围在变量中丢失

Javascript jquery-范围在变量中丢失,javascript,jquery,jsp,Javascript,Jquery,Jsp,我正在开发的应用程序将得到一些与我的问题无关的动态内容。问题是 var pat; $.post('venki/path.jsp', { nam:nam } , function(data) { pat=data; alert(pat); //it will displayed the received code form path.jsp }); alert(pat);// it will not keep the data received from path

我正在开发的应用程序将得到一些与我的问题无关的动态内容。问题是

 var pat;
 $.post('venki/path.jsp', { nam:nam } , function(data) {
     pat=data;
     alert(pat); //it will displayed the received code form path.jsp   
 });
 alert(pat);// it will not keep the data received from path.jsp
现在我不需要失去这个范围

例如:

var pat=0;

$.post(
     pat = 1    
);

alert(pat);
它应该警告1,而不是o

在java中,我应该使用static。在jquery中,如何声明静态变量

我得到了一个答案: 它简单且非常有用,无需担心同步问题。答案很棘手…

如果我没有弄错的话,$.post是异步的,因此pat不会丢失其作用域,而是在pat=数据执行之前执行


要使其成为同步调用,请看以下问题:

这是因为当您提醒pat值时post请求未完成。为确保值已修改,请在post success功能中向其发出警报:

var pat;
 $.post('venki/path.jsp', { nam:nam } , function(data) {
    pat=data;
    alert(pat); //modified value   
  });

另一个副本与范围无关,与时间无关。异步JavaScript和XML是异步的是的,如果我们在scode中给出,它肯定会起作用。我需要在我的项目中使用变量值用于其他用途…知道吗?setTimeout是另一种方法,但我建议您不要使用它,因为您无法预测完成请求所需的时间。请求完成所需的时间取决于很多因素:实时服务器负载、连接速度等。一旦异步调用完成,将数据传递给另一个函数并使用它?