Klar wird der JS-Teil der .php auf diese Weise nicht ausgeführt, da ja auch im Callback mittels
div.innerHTML = hr.responseText;
nur ein String in einen anderen kopiert wird, also keine Evaluation stattfindet.
Eval ist zwar des Teufels, aber hier kann es eine Lösung sein:
Sender:
<?php
$data['innerHtml']='Das ist <b>fett</b>!';
$data['script']='alert("Ist das nicht fett?");';
echo json_encode($data);
?>
Webseite:
<!doctype html>
<html>
<body>
<h1>Test</h1>
<div id="foo">Das ist dünn.</div>
<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>