XML-Dokument (erhalten durch Ajax-Aufruf) in ein neues Fenster rendern

9

Hi Ich suche nach einem Weg, um ein XML-Dokument, das ich mit Ajax abrufe, in ein neues Browserfenster zu rendern.

Ich verwende JQuerys ajax () -Funktion, um JSON-Daten an einen MVC-Controller zu senden. Der Controller gibt XML als Zeichenfolge zurück.

Ich benutze window.open (), um ein neues Fenster in Javascript zu erstellen und den Inhalt der Dokumente durch einen Aufruf festzulegen.

%Vor%

(wobei jqXHR.responseText das XML ist, das vom Aufruf ajax () zurückgegeben wird.)

Das neue Fenster öffnet sich wie erwartet und wenn ich die Quelle auf der Seite anschaue, sehe ich mein XML. ABER (Sie wussten, dass einer kam), nichts erscheint im Browserfenster. Offensichtlich, wenn ich die Seitenquelle auf Festplatte speichern und öffnen, wird die Ausgabe wie erwartet gerendert.

Kann jemand eine Lösung vorschlagen? Um mein Hauptziel noch einmal zu wiederholen, gebe ich ein XML-Dokument (erhalten durch einen Ajax-Aufruf) in ein neues Fenster zurück.

Ich sollte auch hinzufügen, dass ich möchte, dass die Ausgabe von einer XSLT transformiert wird. Mein XML hat diese Verarbeitungsanweisung. Vielen Dank

Bearbeiten --------------------------- DIE LÖSUNG, MIT DER ICH GEWONNEN HABE ------- ------------------

Danke für alle Kommentare und Vorschläge.

Die Lösung, mit der ich am Ende war, war ein Formular mit target="_ blank". Dann schrieb ich den JSON als verborgenes Feld in das Formular und postete es an meinen Controller, der das XML (aus dem JSON erstellt) zurückgab ). Wenn das XML von der Antwort zurückgegeben wurde, hat der Browser es wie erwartet markiert. Ich denke, das ist keine Antwort auf die ursprüngliche Frage. Aber Gabby hat unten eine Lösung.

    
nixon 07.04.2011, 13:09
quelle

5 Antworten

7

Das Folgende funktioniert nur in FireFox und Opera , aber ich denke, es ist erwähnenswert ..

%Vor%

sollte auch mit chrome funktionieren, aber es scheint window.open anders als eine gewöhnliche URL zu behandeln .. wenn Sie einfach die resultierende URL in chrome eingeben, funktioniert das auch dort.

Aktualisieren Dies funktioniert mit allen Browsern!

Die Sache ist, dass Javascript die Fähigkeit hat, xml mit xslt zu transformieren Aber nicht automatisch, also müssen wir die XML-Datei für den Verweis auf die XSLT-Datei finden und diese ebenfalls laden. Dann können wir die Umwandlung in Javascript durchführen und den resultierenden HTML-Code an das neue Fenster übergeben.

Natürlich behandelt IE etwas anders als der Rest.

%Vor%     
Gaby aka G. Petrioli 07.04.2011, 13:51
quelle
0

Sie müssen das Popup-Fenster auf Content-type: text/xml setzen und das Popup-Fenster mit <?xml version="1.0" encoding="UTF-8"?>

starten     
arma 07.04.2011 13:16
quelle
-1

Sie könnten ein Schlagwort verlieren, aber warum öffnen Sie nicht einfach ein Fenster, das auf die URL des Controllers zeigt?

    
TJHeuvel 07.04.2011 13:11
quelle
-1

Schreiben Sie das XML in ein Textfeld. Style das Textfeld mit CSS.

    
quelle
-1

Browser rendert HTML. IE und einige andere öffnen die XML-Datei mit Formatierung, aber das ist nicht das Standardverhalten von Browsern - also sollten Sie sich nicht darauf verlassen. Bessere Lösung für mich ist, eine Datei herunterzuladen, und der Benutzer wird entscheiden, wann er die Datei speichern oder öffnen möchte. Aber wenn Sie nicht herunterladen wollen, müssen Sie HTML aus Ihrem XML generieren. Das ist der Fall, wenn Sie einige Formatierungen vornehmen sollten, fügen Sie CSS-Stile hinzu, um sie benutzerfreundlicher und lesbarer zu machen. Um dies zu erreichen, verwenden Sie am besten Xsl Transformation , um Ihre HTML-Ausgabe aus XML zu generieren. Das wäre der eleganteste Weg, HTML direkt aus XML zu generieren. Aber wenn Sie dies auch nicht wollen und Sie sich wirklich nicht um Benutzerfreundlichkeit kümmern, könnten Sie ein Textelement (p, span, etc) verwenden und XML nicht direkt in ein neues Fenster schreiben, sondern in den Text dieses Elements. Auf diese Weise wird Ihr XML angezeigt, wie es ist

    
archil 07.04.2011 13:18
quelle

Tags und Links