将XML文档(通过ajax调用获取)渲染到新窗口

嗨,我正在寻找一种方法,将我使用ajax检索的XML文档呈现到新的浏览器窗口。

我正在使用JQuery的ajax()函数将JSON数据发布到MVC控制器。 控制器将XML作为字符串返回。

我正在使用window.open()在javascript中创建一个新窗口并通过调用设置文档内容。

newwindow.document.clear(); newwindow.document. newwindow.document.write(jqXHR.responseText); newwindow.document.close(); 

(其中jqXHR.responseText是从ajax()调用返回的XML。)

新窗口按预期打开,如果我在页面上查看源代码,我会看到我的XML。 但是(你知道有人来了)浏览器窗口中没有任何内容。 显然,如果我将页面源保存到磁盘并打开输出,则按预期呈现。

有谁能提出解决方案? 重新迭代我的主要目标是将XML文档(通过ajax调用获得)呈现到新窗口。

我还要补充一点,我希望看到由XSLT转换的输出。 我的XML有这个处理指令。 非常感谢

编辑 —————————我想要的解决方案—————– ——–

感谢大家的意见和建议。

我最终得到的解决方案是使用target =“_ blank”的表单然后我将JSON作为隐藏字段写入表单,并将其发布到我的控制器,该控制器返回XML(从JSON构造)。 当从响应返回XML时,浏览器按预期标记它。 我想这不是原始问题的答案。 但是Gabby在下面有一个解决方案。

以下内容仅适用于FireFoxOpera ,但我认为值得一提。

 window.open('data:text/xml,' + encodeURIComponent( jqXHR.responseText ) ); 

也应该使用chrome,但它似乎对window.open处理方式与通常的URL不同..如果你只是在chrome中输入生成的url它也可以在那里工作..


更新 适用于所有浏览器!

问题是javascript能够使用xslt转换xml。
但不是自动的,所以我们需要找到XML文件以引用XSLT文件并加载它。 然后我们可以在javascript中进行转换并将生成的html传递给新窗口。

IE自然会处理与其他东西不同的东西。

 $.get('xml-file-here.xml', function(xmlData){ var xml = xmlData; //extract the stylesheet so we can load it manually var stylesheet; for (var i=0;i 

你必须将popup设置为Content-type: text/xml和ofc start popup with

您可能会丢失一个流行语,但为什么不打开一个指向控制器URL的窗口?

将XML写入textarea。 使用CSS设置textarea的样式。

浏览器渲染html。 IE和其他一些人用格式打开xml文件,但这不是浏览器的默认行为 – 所以你不应该依赖它。 对我来说更好的解决方案是建议下载文件,用户将决定何时保存文件或打开文件。 但是如果你不想要文件下载,那么你需要从你的xml生成html。 这是你应该进行一些格式化的情况,为它添加css样式以更加用户友好和可读。 要实现这一点,最好的方法是使用Xsl Transformation从xml生成输出html。 这将是直接从xml生成html的最优雅方式。 但是如果你也不想要这个,并且你真的不关心用户体验,你可以使用一些文本元素(p,span等)并将xml直接写入新窗口,但是在这个元素的文本中。 这样你的xml就会按原样显示