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 关注
- 545 浏览
添加回答
举报
0/150
提交
取消
