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是另一种方法,但我建议您不要使用它,因为您无法预测完成请求所需的时间。请求完成所需的时间取决于很多因素:实时服务器负载、连接速度等。一旦异步调用完成,将数据传递给另一个函数并使用它?