使用jquery将整个文件作为字符串分配给var

时间:2011-10-14 09:28:48

标签: javascript jquery

我正在尝试将xml文件的内容分配给var,如下所示:

var testing = $.load('xx.xml');
$('#display').text(testing);

但它不起作用。我按照以下建议尝试了“.load”功能:

How to assign file contents into a Javascript var

我查看了他们在jquery网站上建议的页面,但我找不到特定的东西来将.xml文件的内容作为字符串分配给var。

我很欣赏这可能非常明显&我可以说是懒惰,但我一直在尝试随意的事情。无法弄清楚这一点。

由于

EDIT!我正在加载加载函数中的内容,我不是这个意思,它现在已经编辑了。

3 个答案:

答案 0 :(得分:3)

首先,$.load不是最新jQuery源中定义的函数,也不是jQuery站点上的文档。

其次,假设您尚未修改jQuery的全局AJAX设置,jQuery.fn.load和其他请求函数将是异步的,因此您不能将结果分配给变量,因为函数在请求完成之前返回。您需要使用回调处理程序。

尝试使用带有回调函数的$.ajax

var testing;
$.ajax('xx.xml', {
    dataType: 'text',
    success: function (data) {
        testing = data;
        $('#display').text(testing);
    }
});

由于您希望数据作为文本并且文件看起来是XML,我们使用dataType告诉jQuery将数据作为字符串返回。

答案 1 :(得分:1)

没有$.load功能。你可能想要的是jQuery.get

var xml;
$.get("xx.xml", function(data) {
    xml = data;
});

当文件以异步方式检索时,您需要将结果分配给回调内的变量,该变量在请求成功返回时执行。但请注意,如果您在xml调用后尝试运行依赖于.get的代码,则xml将被取消定义,因为回调还没有运行。例如:

var xml;
$.get("xx.xml", function(data) {
    xml = data;
    //Do stuff with data here
});
console.log(xml); //Most likely undefined because asynchronous call has not completed

如果您尝试将结果插入DOM元素,则可以使用.load 方法

$("#someElem").load("xx.xml");

答案 2 :(得分:0)

如果您尝试使用ajax从服务器获取xml,可以尝试这样的事情 -

function getXml()
{
    var contents;
    $.ajax({ url :'/website/method', type: 'GET', dataType :'xml', async : false, 
     cache : true, success : function(myXml){
       contents = myXml;
    }
    });     

    return contents;
}