Funktionsaufruf nach AJAX - ohne eval, ohne jQuery?

ZodiacXP

Erfahrenes Mitglied
Wär das X nicht, wäre es kein Problem JS per AJA(X) nachzuladen. So stehe ich aber vor dem ziemlich skurrilen Ansatz das JS herauszufiltern und durch eval() laufen zu lassen.

Geht es nicht "einfacher" oder "schöner"?


Beispiel: Per AJAX wird ein alert() nachgeladen, welches anschließend ablaufen soll
PHP:
<script>
altert("erfolg"); 
</script>

Das wird aber ohne weiteres nicht interpretiert.
 
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html id="html" xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	
	<title>Insert script</title>
	
	<script type="text/javascript">
	/* <![CDATA[ */
		window.onload = function() {
			//Ansatt des timeouts würde hier per AJAX das script als string geladen
			window.setTimeout(function() {
				var js = "alert('erfolg******');";
				insertScript(js);
				
				//Anstatt es direkt auszuführen, könntest du es auch in eine Funktion stecken und den Namen mitsenden
				js = 'function fn123() {alert("ERFOLG!");};';
				var fnName = "fn123";
				insertScript(js);
				this[fnName]();
			},1000);
		}
		
		function insertScript(js) {
			var newScript = document.createElement('script');
			newScript.type = "text/javascript";
			newScript.text = js;
			document.getElementById("foobar").appendChild(newScript);
		}
	/* ]]> */
	</script>
</head>

<body>
	<div id="foobar"></div>
</body>
</html>
 
Zurück