【问题标题】:Odd jQuery AJAX behaviour: XML comes back as #document and not object奇怪的 jQuery AJAX 行为:XML 作为 #document 而不是对象返回
【发布时间】:2012-04-17 09:29:04
【问题描述】:

我在使用 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 错误并且现在看不到!

【问题讨论】:

    标签: jquery xml ajax


    【解决方案1】:

    这是预期的行为,请参阅documentation

    数据类型
    默认值:智能猜测(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() );
    // ...
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-26
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 2022-10-02
        • 2011-08-18
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多