Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery缓存XML_Javascript_Jquery_Xml - Fatal编程技术网

Javascript jQuery缓存XML

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

我正在尝试创建一个公文包站点,其中我的作品位于一个XML文件中。我希望将XMLDOM存储在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时,如果在“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