2014-03-25 28 views
0

我正在开发应用程序,它将获得一些与我的问题无关的动态内容。问题是jquery - 在变量中迷失的范围

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,而不是Ø

在java中,我应该用静态的。在jQuery中,如何声明静态变量。

得到了一个答案: 它简单而且非常有用,无需担心同步。答案是棘手...

+1

的另一个副本【如何返回从AJAX调用的响应?](http://stackoverflow.com/questions/14220321/how-以回报从一个阿贾克斯回应) – Quentin

+2

这与范围和一切有关时间无关。异步JavaScript和XML是**异步** – Quentin

回答

4

这是因为当您提醒拍摄值时发布请求未完成。为了确保值被修改,它提醒成功后函数内部:

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

是的,它肯定会工作,如果我们给内部scode ..我需要使用我的项目内的变量值用于其他用法...任何想法? – itsme

+1

setTimeout是另一种方法,但我建议您不要使用它,因为您无法预测完成请求所需的时间。请求完成所需的时间取决于大量因素实时服务器负载,连接速度等... –

+2

异步调用完成后,将数据传递给另一个函数并使用它? – user1329482