【问题标题】:can XML be send as response to iframeXML 可以作为对 iframe 的响应发送吗
【发布时间】:2011-10-03 10:48:20
【问题描述】:

我正在尝试发送 xml 数据作为对动态生成的iframe 的响应。我正在发送以下数据作为响应

out.println(  
     "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +   
         " <response> " + My_data +  "</response>" ); 

当我使用firebug 检查时,我只看到以下innerHTML

&lt;response&gt; My_data &lt;/response&gt;

如果我尝试解析 xml,我会收到 uncaught exception: Invalid XML 错误。这是我的js

   var xml = this.contentDocument.body.innerHTML,  /* this : iframe id */
       xmlDoc = $.parseXML( xml ), 
       $xml = $( xmlDoc ), 
       $title = $xml.find( "<file-url>" ); 
          alert($title.text());

如何发送 XML 响应和解析。

【问题讨论】:

  • 如何将 XML 加载到该 IFRAME 中。考虑使用 AJAX 获取对 JS 的 XML 响应。
  • @JanPfeifer: in servlet : response.setContentType("text/xml") 然后可以将其加载到 iframe 中。我将响应作为XML 数据发回,但只有在解析响应 XML 时出现错误。

标签: javascript jquery html servlets iframe


【解决方案1】:

通常使用 AJAX 是一个好主意。您实际上如何将该 xml 加载到 IFRAME 中?通过使用静态 SRC 或 Javascript?您的代码中也有拼写错误。

  • Javascript 命令必须以分号而不是逗号结尾
  • jQuery.find 只接受不带 的标签名称
  • 您可以在您的 innerHTML 之前添加一个 xml 标头 (),但这不是必需的

这应该可行:

var xml    = this.contentDocument.body.innerHTML,  /* this : iframe id */
var xmlDoc = $.parseXML( xml );
var $xml   = $( xmlDoc );
var $title = $xml.find( "file-url" ); 
      alert($title.text());

【讨论】:

  • 是的,你是对的。使用AJAX 是处理XML 数据的好主意,但我正在将文件&lt;input type="file" /&gt; 从客户端上传到服务器,这就是为什么我不能将AJAX 用于此功能。
  • 我在第一行遇到错误this.contentDocument.body.innerHTML : undefined
  • 所以使用 this document.getElementById('yourFrameID').contentDocument
  • this 表示为某些element/selecterobject,因此在我的情况下,this 对象可以代替其他形式工作。顺便说一句,我找到了 sol'n,例如$(this).find('body').html(); 但出现另一个需要更多研究的错误。无论如何,感谢您的时间和帮助
猜你喜欢
  • 2012-06-12
  • 2011-02-26
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多