Ich habe ein Javascript-Programm, das ein Formular an eine PHP-Seite übermittelt, die Daten abhängig von den Formulareinträgen sammelt. Ich habe überprüft, dass die Daten korrekt zurückgegeben werden. Im folgenden Stück des Codes, wird der Erfolg Teil des Ajax-Aufruf dargestellt:Wie bekomme ich HTML geschrieben, um mit window.document.write eine neue Registerkarte zu erstellen?
success: function(msg){
var newWindow = window.open("_blank");
var result = $.parseJSON(msg);
var array =
newWindow.document.open();
newWindow.document.write("<!DOCTYPE html><html><head></head><body>");
for(var i=0; i<result.entries.length; i++) {
var obj = result.entries[i];
newWindow.document.write(unescape(obj));
}
newWindow.document.write("</body></html>");
newWindow.document.close();
newWindow.focus();
alert("Printout complete");
}
Die Registerkarte wird geöffnet, und die entries[i]
Elemente, die Strings sind, werden auf die neue Registerkarte geschrieben. Dies ist, was auf dem Browserfenster angezeigt wird:
<h1>Age 1</h1><h2>Test</h2><br/>Test
Die Seite Quelle zeigt:
<html><head></head><body>"<h1>Age</h1><h2>Test</h2><br/>Test"</body></html>
The PHP page which filled the result obj contained:
...
if($age != $last_age) {
$last_age = $age;
array_push($items,"<h1>Age $age</h1>");
}
if($age == $last_age && $event != $last_event) {
$last_event = $event;
array_push($items,"<h2>$event</h2>");
}
array_push($items,"<br/>$data");
}
$result["entries"] = $items;
header("Content-type: application/json");
header("Cache-Control: no-cache, must-revalidate");
echo json_encode($result);
es, dass die h1 usw. in die Saiten setzen erscheint in ihnen Ergebnis zurückgegeben werden wird codiert als <h1> usw. Sie erscheinen dann im Quelltext der Seite als '<', aber die gesamten Zeilen, die die entries[i]
enthalten, sind in doppelte Anführungszeichen eingeschlossen. Wenn ich unescape(obj)
schreibe, ersetze ich "<h1> Hallo Welt </h1 >", bekomme ich das auf der Seite gerendert.
Wie bekomme ich den HTML-Code auf die Seite und lasse ihn mit der h1, h2, etc. gerendert werden?