javascript - jQuery 缓存 XML

标签 javascript jquery xml

我正在尝试创建一个作品集网站,其中我的作品位于一个 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/

相关文章:

javascript - js 对象可以动态重新分配给不同的类型吗?

javascript - 如何将变量值从 javascript 传递到 perl

javascript - 事件目标匹配但未调用函数?

java - Android 自定义通知 RemoView 不使用样式

c# - XmlSerializer 相当于 IExtensibleDataObject

javascript - 无法从 IE 11 中的父页面打印 iframe 内容

javascript - 是什么让 Angular 和 Backbone 与 jQuery 不同?

javascript - 动态获取slide的一个值

javascript - Jquery Ajax 只能运行一次

xml - 如何在运行时在 xslt 中生成故障?