Визуализация XML-документа (полученного с помощью вызова ajax) в новом окне
Привет я ищу способ визуализации XML-документа, который я получаю с помощью ajax, в новое окно браузера.
Я использую функцию ajax() JQuery для отправки данных JSON в контроллер MVC. Контроллер возвращает XML в виде строки.
Я использую окно.откройте (), чтобы создать новое окно в javascript и задать содержимое документов с помощью вызова.
newwindow.document.clear();
newwindow.document.
newwindow.document.write(jqXHR.responseText);
newwindow.document.close();
(где jqXHR.responseText-это XML, возвращаемый вызовом ajax ().)
Новое окно открывается, как и ожидалось, и если я просмотр исходного кода на странице, где я вижу свой XML. Но (вы знали, что он придет) ничего не появляется в окне браузера. Очевидно, что если я сохраню исходный код страницы на диск и открою его, то результат будет отображаться так, как ожидалось.
Может ли кто-нибудь предложить решение?
Просто для повторной итерации моей главной целью является визуализация XML-документа (полученного с помощью вызова ajax) в новом окне.
Я также должен добавить, что я хотел бы видеть выходные данные, преобразованные XSLT. В моем XML есть эта инструкция по обработке.
Многие Спасибо
Править--------------------------- решение, с которым я пошел -------------------------
Спасибо всем за замечания и предложения.
Решение, которое я в конечном итоге выбрал, состояло в том, чтобы иметь форму с target="_blank", затем я написал JSON в форму как скрытое поле и отправил его на мой контроллер, который вернул XML (построенный из JSON). Когда XML был возвращен из ответа, браузер пометил его, как и ожидалось. Я думаю, что это это не ответ на первоначальный вопрос. Но у Габби есть решение ниже.
5 ответов:
Следующее будет работать только в FireFox и еще Опера, но я думаю, что стоит упомянуть ..
window.open('data:text/xml,' + encodeURIComponent( jqXHR.responseText ) );Также должен работать с chrome, но, похоже, он обрабатывает
window.openиначе, чем обычный URL.. если вы просто введете полученный url-адрес в chrome, он также будет работать там..
Обновление это работает со всеми браузерами !
Дело в том, что javascript имеет возможность транформировать xml с помощью xslt.
Но не автоматически, поэтому нам нужно найти 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(); }); });
Вы должны установить popup быть
Content-type: text/xmlи ofc начать popup с<?xml version="1.0" encoding="UTF-8"?>
Вы можете потерять модное слово, но почему бы вам просто не открыть окно, которое указывает на URL контроллера?
Браузер отображает html. IE и некоторые другие открывают xml - файл с форматированием, но это не стандартное поведение браузеров-поэтому вы не должны полагаться на него. Лучшее решение для меня-предложить загрузить файл, и пользователь будет решать, когда он хочет сохранить файл или открыть его. Но в случае, если вы не хотите загружать файл, вам нужно сгенерировать html из вашего xml. Это тот случай, когда вы должны сделать некоторое форматирование, добавить стили css, чтобы он был более удобным для пользователя и читаемым. И чтобы достичь этого, лучше всего использовать преобразованиеXsl для генерации выходного html из xml. Это был бы самый элегантный способ генерировать html непосредственно из xml. Но в случае, если вы также не хотите этого, и вы действительно не заботитесь о пользовательском опыте, вы можете использовать какой-то текстовый элемент (p, span и т. д.) и писать xml не непосредственно в новое окно, а в текст этого элемента. Таким образом, ваш xml будет отображаться как есть
Comments