Javascript jQuery缓存XML
我正在尝试创建一个公文包站点,其中我的作品位于一个XML文件中。我希望将XMLDOM存储在JavaScript变量中,这样我就可以访问它,而无需在每次用户单击加载新片段时调用服务器 现在我有:Javascript jQuery缓存XML,javascript,jquery,xml,Javascript,Jquery,Xml,我正在尝试创建一个公文包站点,其中我的作品位于一个XML文件中。我希望将XMLDOM存储在JavaScript变量中,这样我就可以访问它,而无需在每次用户单击加载新片段时调用服务器 现在我有: $(document).ready( function() { xml = getXML(); }); function getXML() { var data = $.ajax({ url: '_lib/xml/portfolio.xml', dataT
$(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时,如果在“success:”之后的匿名函数中输入“console.log(data)”,它将记录一个“文档”。如果在“$(Document.ready…”中输入“console.log(xml)”,它将记录一个XMLHTTPRequest,并且我无法访问xml文档的DOM
我尝试过返回“data.responseXML”,但那没有任何作用。我还尝试在“success:”之后调用一个非匿名函数,并在那里记录XML,但它仍然显示为“Document”,这正是我所需要的
当我返回XML时,问题似乎出现了——它从“Document”更改为“XMLHTTPRequest”
任何帮助都将不胜感激。谢谢 试试这个:
function getXML() {
var XML = null;
$.ajax({
url: '_lib/xml/portfolio.xml',
dataType: 'xml',
async: false,
success: function(data) {
XML = data;
}
});
return XML;
}
我不知道“$.ajax
”返回的是什么,但我尝试过与您的类似的方法,但从未奏效。所以上面的代码就是我要解决的
编辑只是想强调,在ajax请求中必须有“async:false
”
希望这有帮助。太棒了,纳瓦曼——非常感谢!也许“$.ajax”返回整个XML对象,“success:”只返回responseXML?你知道为什么async需要为false吗?我真的不知道返回:p
async
需要设置为false
,以便函数getXML()
将首先等待ajax执行成功。(首先分配XML):D