【问题标题】:Injecting HTML node from an XML document into an HTML document via Ajax通过 Ajax 将 XML 文档中的 HTML 节点注入 HTML 文档
【发布时间】:2013-04-13 03:07:07
【问题描述】:

发出一个 Ajax 请求后,我收到 XML 作为响应,有一个已经像 HTML 一样预先格式化的 XML。我只想从 XML 中获取一个节点并将其注入 DOM。响应中还有其他纯 XML 节点。 XML 或多或少可能看起来像。

    <xml>
      <div id="foo">
          <div id='foo'>...
              <img src="foo.jpg"/>
          </div>
      </div>
      <node></node>
      <node></node>
      <node></node>
      <node></node>
    </xml>

因此,如果我想获取 div 节点并将其注入 DOM,我可以使用类似

的方法来实现
    var e = this.responseXML.getElementById('foo');
    $('#container').html(e);

问题是当 html 被注入时,图像无论如何都不会下载。如果我使用 responTEXT,图像会下载,但我会得到所有其他我不想要的 XML。

有谁知道注入时没有下载图像的主要原因?或者如何让他们这样做?

【问题讨论】:

  • 试试$('#container').empty().append(e);
  • 这本质上是一样的,不是吗?只是另一种方式实际附加 HTML。不会改变不评估 HTML 和请求图像的原因。
  • .html() 采用 html 字符串而不是节点。如果上述方法不起作用,请尝试$('#container').empty().append($(e).clone());
  • 似乎仍然在做同样的事情:(

标签: javascript html xml ajax


【解决方案1】:

好的,找到了解决这个问题的最佳方法。我无法让 responseXML 以我想要的 jQuery 方式运行。我能够使用 XUIjs,但它以不同的方式处理对象,并且需要不同的选择器包装并从对象数组中提取项目。我找到的最佳解决方案是使用 responseText,它似乎被视为 HTML。

   var e = this.responseText;
   $('#container').html(e.find("#items"));

这可以很好地加载并导致图像按预期被请求。

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 2022-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多