我正在尝试创建一个投资组合站点,其中我的组件位于XML文件中。我想将XML DOM存储在一个JavaScript变量中,这样我就可以访问它,而不必每次用户单击加载一个新的部件时都对服务器进行调用。jQuery缓存XML
现在我有:
$(document).ready(function() {
xml = getXML();
});
function getXML() {
var data = $.ajax({
url: '_lib/xml/portfolio.xml',
dataType: 'xml',
success: function(data) { return data; }
});
return data;
}
虽然使用Firebug,如果我“的console.log(数据)”,在之后的匿名函数“的成功:”“文件”,它记录一个如果我在“$(document).ready ...”中使用“console.log(xml)”,它会记录一个XMLHTTPRequest,并且我无法访问XML文档的DOM。
我试过返回“data.responseXML”,但没有做任何事情。我也尝试过在“成功”之后调用一个非匿名函数,并在那里记录XML,它仍然以“Document”的形式出现,这正是我所需要的。
似乎问题发生在我返回XML时 - 它从“Document”更改为“XMLHTTPRequest”。
任何帮助将不胜感激。谢谢!
太棒了,NawaMan - 非常感谢!也许“$ .ajax”返回整个XML对象,“success:”只返回responseXML?你知道为什么异步需要是错误的吗? – salmonete 2009-10-17 16:12:53
我真的不知道退货情况:p。 'async'需要为'false',以便函数'getXML()'等待ajax执行成功。 (首先分配XML)。 :d – NawaMan 2009-10-17 16:36:28