Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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将整个文件作为字符串分配给变量_Javascript_Jquery - Fatal编程技术网

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

Javascript 使用jquery将整个文件作为字符串分配给变量,javascript,jquery,Javascript,Jquery,我试图将xml文件的内容分配给var,如下所示: var testing = $.load('xx.xml'); $('#display').text(testing); 但它不起作用。我尝试了以下建议的“.load”功能: 我查看了他们从jquery网站上建议的页面,但是我找不到将.xml文件的内容作为字符串分配给var的特定内容 我明白这可能是非常明显的&我可以说是懒惰,但我已经尝试了一段时间随机的事情&无法理解这一点 谢谢 编辑!我在加载函数中加载内容,我不是这个意思,它现在已编辑。没

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

var testing = $.load('xx.xml');
$('#display').text(testing);
但它不起作用。我尝试了以下建议的“.load”功能:

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

我明白这可能是非常明显的&我可以说是懒惰,但我已经尝试了一段时间随机的事情&无法理解这一点

谢谢


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

没有
$。加载
函数。您可能想要的是:

由于文件是异步检索的,因此需要将结果分配给回调内的变量,该变量在请求成功返回时执行。但是请注意,如果在
.get
调用之后尝试运行依赖于
xml
的代码,
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元素,则可以使用以下方法:


如果您试图使用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;
}

首先,
$.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以字符串形式返回数据

正如Alex R.所说,文本只用于字符,而不是HTML。还有,你为什么要在调用中加载var?哎呀,那是一个学童错误,我粘贴了一个旧版本,代码更改了。@MarcoJohannesen,它实际上不起作用,所以我不得不收回我的答案。我没有试图将它插入DOM元素,是的,但这不是我要实现的主要目标,这只是为了证明它已加载。然后使用我答案中的第一个示例。这样做是行不通的:
var xml;$。get(“xx.xml”,函数(数据){xml=data;})$(“#某处”).html(xml)
因为它是在变量赋值后调用的,即在get callNo之后调用的,因为
xml
未定义
,因为异步调用不会完成。您必须将
$(“#某处”).html(xml)
行放在回调中。看我的编辑,我明白了。有没有办法强制.get调用获取文件并将内容分配给一个变量,然后在另一个函数中使用该变量(当然不是将另一个函数放入回调函数中)。使用此方法,调用
getXml()
将返回
未定义的
,因为
返回内容行将在AJAX调用完成之前运行。@James:saarthak在示例代码中专门设置了
async:false
,因此这实际上应该按预期工作。然而,使用同步请求通常不是一个好主意-它们会锁定用户界面,阻止用户与页面交互,MDN站点表明它们容易出现内存泄漏。@AndyE-哦,是的,我错过了这一点!抱歉,saarthak。当我执行此操作并执行
alert(testing)
时,它返回Object[XML Object]。为什么会这样,我怎么才能得到一根漂亮的线呢?
function getXml()
{
    var contents;
    $.ajax({ url :'/website/method', type: 'GET', dataType :'xml', async : false, 
     cache : true, success : function(myXml){
       contents = myXml;
    }
    });     

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