嗨,我正在寻找一种方法,将使用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在下面有一个解决方案。
以下仅适用于 FireFox 和 Opera ,但我认为值得一提。
window.open('data:text/xml,' + encodeURIComponent( jqXHR.responseText ) );
应该也可以与chrome一起使用,但是它似乎与window.open
通常的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<xml.childNodes.length;i++){
if ( xml.childNodes[i].nodeName =='xml-stylesheet' )
{
stylesheet = xml.childNodes[i].data;
}
}
var items = stylesheet.split('=');
var xsltFile = items[items.length-1].replace(/"/g,'');
//fetch xslt manually
$.get( xsltFile, function(xsltData){
var xslt = xsltData;
var transformed;
if (! window['XSLTProcessor'])
{
// Trasformation for IE
transformed = xml.transformNode(xslt);
}
else
{
// Transformation for non-IE
var processor = new XSLTProcessor();
processor.importStylesheet(xslt);
var xmldom = processor.transformToDocument(xml);
var serializer = new XMLSerializer();
var transformed = serializer.serializeToString(xmldom.documentElement);
}
var newwindow = window.open();
newwindow.document.open();
newwindow.document.write(transformed);
newwindow.document.close();
});
});
问题内容: 我有一个带有选项卡的页面,我想在单击选项卡时仅通过ajax渲染不同的部分。我有一些代码,但我认为这不是最有效的方法。我希望有人能帮助我解决已经存在的代码,或者如果有一种更简单的方法,我将不胜感激。谢谢! HTML标签 学校负责人 最新JS 路线 问题答案: 请参阅我对上一篇文章的回答。这将为您提供一个在Rails中的AJAX想法:完成模型#更新后显示模型#新表单 您可以做的是在操作中呈
问题内容: 我建立了一个复合组件,看起来像这样: 组件正确显示当前标签。 现在,当执行该动作时,什么也不会发生。但是,当我将Postfix添加到组件中的ID时,它可以正常工作(请参见下文)。 并使用后缀在render中定义ID: 有人可以向我解释为什么仅当我在ID中添加后缀时才起作用吗? 问题答案: 这个问题实际上有两个方面。 第一个问题是,实际上指定复合部件的ID 本身 的。默认情况下,HTML
问题内容: 对于那里的MVC专家来说,这应该相对简单,但我仍在学习中。 简单来说,我有一个视图不是强类型的。 在此视图上,我有一个文本框,使用jQuery的AutoComplete对其进行了扩展 当用户在文本框中键入内容时,自动完成功能将对Controller进行AJAX调用,该Controller会调用存储过程,并返回具有2个属性的JSON记录集合: ID (商品的标识符) 名称 (商品名称)
问题内容: 我曾经使用此代码片段重新渲染“推文”按钮。 但是看起来widgets.js(http://platform.twitter.com/widgets.js)已被修改,因此twttr.TweetButton不再是构造函数。 谁能解决这个问题? 问题答案: 似乎从来没有支持过构造函数,现在在上一次API更新之后不再起作用: http://groups.google.com/group/twi
我认为这是一个简单的问题。我不熟悉jQuery。我正在尝试制作脚本,这样当您单击图像时,ajax将调用php文件,该文件将更新mySQL数据库。 我的脚本: HTML: PHP文件: 出于某种原因,完全没有回应。数据库保持不变,html页面没有任何变化。代码是否有问题,或者我无法通过ajax更新数据库?
本文向大家介绍Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法,包括了Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法的使用技巧和注意事项,需要的朋友参考一下 1. 引入jquery和vue.js 2. JS 3. HTML 以上这篇Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法就是小编分享给大家的全部内容了,希