我仍然是jQuery和ajax领域的新手,但是我有一个$ .ajax请求,执行GET来检索一些XML文件(〜6KB或更少),但是在用户花那个页面的时间内,XML内容应该不会/不会更改(此设计我无法更改,在我从其他地方读取XML文件时也无权更改它)。因此,我有一个全局变量将响应数据存储到该变量中,并且对该数据进行的所有后续查询都将在此变量上进行,因此不需要进行多个请求。
考虑到XML文件可以增加的事实,我不确定这是最佳实践,而且还来自Java背景,因此我对全局公共变量的想法通常是不可以的。
因此,我的问题是,是否可能有更好的方法来解决这个问题,以及如果文件扩展到某个可笑的文件大小,是否会引起任何内存问题?
我认为数据可以传递到xml对象内部的一些getter / setter类型函数中,这可以解决我的全局公共变量问题,但仍然引发了一个问题,即我是否应该将响应存储在对象内部。
例如,我目前正在做的是:
// top of code var 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' object var foo = $(xml).find('something').attr('somethingElse');
除了存储它,别无他法。内存分页应减少那里的潜在问题。
我建议不要使用名为“ 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');