JQuery - 將ajax響應存儲到全局變量中我仍然是jQuery和ajax場景的新手,但我有一個$ .ajax請求執(zhí)行GET來檢索一些XML文件(大約6KB或更少),但是在用戶花費在該頁面上的持續(xù)時間內,XML內容應該是不會/不會改變(這個設計我無法改變,我也無權更改XML文件,因為我正在從其他地方讀取它)。因此,我有一個全局變量,我將響應數據存儲到其中,并且對此數據的任何后續(xù)查找都在此變量上完成,因此不需要進行多個請求。鑒于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 關注
- 522 瀏覽
添加回答
舉報
0/150
提交
取消