js Funktion in XMLHttpRequest ausführen?
bearbeitet von Google weiß alles
> dabei muss man aber berücksichtigen, das dann das Script im Scope von onreadystatechange läuft.
Das kann man ja nach aufgabe auf verschiedene Weisen umgehen. Womöglich einfach so:
~~~php
<?php
$data['innerHtml']='Das ist <b>fett</b>!';
$data['script']='document.getElementById("myButton").onclick=function () { alert("Ist das nicht fett?"); };';
echo json_encode($data);
?>
~~~
und
~~~html
<! doctype html>
<html>
<body>
<h1>Test</h1>
<div id="foo">Das ist dünn.</div>
<button id="myButton">KlickMich!</button>
<script>
function worker() {
var data;
var objekt=document.getElementById('foo');
var xmlHttp = new XMLHttpRequest();
if (xmlHttp) {
xmlHttp.open('GET', 'test_0001.php', true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
data=JSON.parse(xmlHttp.responseText);
objekt.innerHTML=data['innerHtml'];
eval(data['script']);
}
};
xmlHttp.send(null);
}
}
worker();
</script>
</body>
</html>
~~~
Ich weiß ja zudem nicht, was für "Funktionen" da übertragen werden sollen. Vielleicht reicht es ja aus, document-globale Variablen neu zu setzen, die dann von einer Funktion genutzt werden.