2014-03-25 30 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