奇怪的 jQuery AJAX 行为:XML 作为 #document 而不是对象返回

Mar*_*ean 5 xml ajax jquery

我在使用 jQuery 时遇到了问题,尝试获取 XML 文档时,它会像#document在控制台中一样返回,而不是我可以操作的对象。为什么是这样?

这是我的 JavaScript 代码:

$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
    console.log(xml);
}, 'xml');
Run Code Online (Sandbox Code Playgroud)

这是 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>
Run Code Online (Sandbox Code Playgroud)

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

Fél*_*lli 4

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

数据类型
默认值:智能猜测(xml、json、script 或 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() );
// ...
Run Code Online (Sandbox Code Playgroud)