我遇到了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错误,现在也看不到!
答案 0 :(得分:3)
这是预期的行为,请参阅documentation:
<强>的dataType 强>
默认值:智能猜测(xml,json,script或html)您期望从服务器返回的数据类型。 如果没有指定,jQuery将尝试根据它推断它 响应的MIME类型(XML MIME类型将生成XML,in 1.4 JSON将产生一个JavaScript对象,在1.4脚本中会 执行脚本,其他任何东西都将作为一个返回 串)。可用的类型(结果作为第一个传递 成功回调的论据是:
“xml”:返回可以通过jQuery处理的XML文档 [...]
此外,使用jQuery.parseXML()解析文档,{{3}}只是浏览器“本机”XML解析的包装器。可以使用DOM遍历和操作生成的文档,或者更方便地使用jQuery。 doc:
中的示例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() );
// ...
答案 1 :(得分:1)
我认为这是因为它是一个文档(它由$.parseXML()
解析,如果你设置了正确的标题,则会返回一个文档),如果你想在它上面使用jQuery方法,你应该将它包装在jQuery中
$.get('/ingredients/view_xml/' + ingredientId, function(xml) {
console.log($(xml));
}, 'xml');