JQuery - 將ajax響應存儲到全局變量中我仍然是jQuery和ajax場景的新手,但我有一個$ .ajax請求執行GET來檢索一些XML文件(大約6KB或更少),但是在用戶花費在該頁面上的持續時間內,XML內容應該是不會/不會改變(這個設計我無法改變,我也無權更改XML文件,因為我正在從其他地方讀取它)。因此,我有一個全局變量,我將響應數據存儲到其中,并且對此數據的任何后續查找都在此變量上完成,因此不需要進行多個請求。鑒于XML文件可以增加的事實,我不確定這是最佳實踐,并且也來自java背景我對全局公共變量的想法通常是禁止的。所以我的問題是,是否有更好的方法可以做到這一點,以及一個問題,如果文件擴展到一些荒謬的文件大小,這是否會導致任何內存問題?我認為數據可以傳遞到xml對象中的一些getter / setter類型函數,這將解決我的全局公共變量問題,但仍然提出了我是否應該將響應存儲在對象本身內的問題。例如,我目前所做的是:// top of codevar xml;// get the file$.ajax({ type: "GET", url: "test.xml", dataType: "xml", success : function(data) { xml = data; }});// at a later stage do something with the 'xml' objectvar foo = $(xml).find('something').attr('somethingElse');
3 回答
阿晨1998
TA貢獻2037條經驗 獲得超6個贊
除了存儲它之外沒有辦法解決它。內存分頁應該減少那里的潛在問題。
我建議不要使用名為'xml'的全局變量,而是做更像這樣的事情:
var dataStore = (function(){
var xml;
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success : function(data) {
xml = data;
}
});
return {getXml : function()
{
if (xml) return xml;
// else show some error that it isn't loaded yet;
}};
})();然后訪問它:
$(dataStore.getXml()).find('something').attr('somethingElse');
神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
這對我有用:
var jqxhr = $.ajax({
type: 'POST',
url: "processMe.php",
data: queryParams,
dataType: 'html',
context: document.body,
global: false,
async:false,
success: function(data) {
return data;
}
}).responseText;
alert(jqxhr);
// or...
return jqxhr;重要的是要注意:global: false,async:false最后responseText鏈接到$.ajax請求。
- 3 回答
- 0 關注
- 533 瀏覽
添加回答
舉報
0/150
提交
取消
