Google weiß alles: js Funktion in XMLHttpRequest ausführen?

Beitrag lesen

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
$data['innerHtml']='Das ist <b>fett</b>!';
$data['script']='document.getElementById("myButton").onclick=function () { alert("Ist das nicht fett?"); };';
echo json_encode($data);
?>

und

<! 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, Dokument-globale Variablen neu zu setzen, die dann von einer Funktion genutzt werden.