我正在尝试创建一个作品集网站,其中我的作品位于一个 XML 文件中。我想将 XML DOM 存储在一个 JavaScript 变量中,这样我就可以访问它而无需在每次用户单击以加载新片段时调用服务器。
现在我有:
$(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(data)”,它会记录一个“文档”。如果我在“$(document).ready...”中“console.log(xml)”,它会记录一个 XMLHTTPRequest,我无法访问 XML 文档的 DOM。
我试过返回“data.responseXML”,但没有任何效果。我也试过在“成功:”之后调用一个非匿名函数并在那里记录 XML,它仍然作为我需要的“文档”出现。
问题似乎是在我返回 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
”。
希望这对您有所帮助。
关于javascript - jQuery 缓存 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582453/