4

我有一个关于 jQuery 的问题,试图获取一个 XML 文档,它#document在控制台中返回,而不是我可以操作的对象。为什么是这样?

这是我的 JavaScript 代码:

$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
    console.log(xml);
}, 'xml');

这是 XML:

<?xml version="1.0" encoding="UTF-8" ?>
<ingredient>
    <entryId>700</entryId>
    <title>GUINEA FOWL WHOLE FRESH X 1.5KG</title>
    <ingredientUnit>KG</ingredientUnit>
    <ingredientCost>5.03</ingredientCost>
</ingredient>

任何帮助将不胜感激,即使这是我犯的一个 n00b 错误并且现在看不到!

4

2 回答 2

3

这是预期的行为,请参阅文档

dataType
默认值:智能猜测(xml、json、脚本或 html)

您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将产生 XML,在 1.4 中 JSON 将产生一个 JavaScript 对象,在 1.4 中脚本将执行脚本,其他任何内容都将是作为字符串返回)。可用的类型(以及作为第一个参数传递给成功回调的结果)是:

“xml”:返回一个可以通过 jQuery 处理的 XML 文档。
[...]

此外,使用jQuery.parseXML()解析文档,它只是围绕浏览器的“本机”XML 解析的一个包装器。生成的文档可以使用 DOM 进行遍历和操作,或者更方便的是使用 jQuery。来自文档的示例:

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc ),
    $title = $xml.find( "title" );

/* append "RSS Title" to #someElement */
$( "#someElement" ).append( $title.text() );
// ...
于 2012-04-17T09:42:30.713 回答
1

我认为那是因为它是一个文档($.parseXML()如果您设置了正确的标题,它会被解析并返回一个文档),如果您想在其上使用 jQuery 方法,您应该将它包装在 jQuery 中

$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
    console.log($(xml));
}, 'xml');
于 2012-04-17T09:36:23.353 回答