2010-12-06 3 views
3

Ich habe ein Problem beim Aufrufen der benutzerdefinierten JS-Funktion, nachdem ich den AJAX-Aufruf ausgeführt habe. Im Grunde habe ich paar Radiobuttons auf der Haupt-HTML-Seite erstellt. Wenn der Benutzer auf einen der Optionsfelder klickt, wird der AJAX-Aufruf ausgelöst und eine weitere HTML-Datei im "div" -Inhalt zurückgegeben, den ich auf der HTML-Hauptseite eingestellt habe. Die andere HTML-Datei enthält eine benutzerdefinierte JS-Funktion (z. B. "updateContent()"), die den onclick-Ereignishandler zum Aufrufen der Funktion verwendet. Wenn ich die App starte und auf die Schaltfläche klicke Ich hatte gesehen, dass der Firebug sich über den Fehler "updateContent() ist nicht definiert" beschwert hat. Die Funktion selbst funktioniert einwandfrei und muss ordnungsgemäß definiert werden. Bitte hilf mir dabei! Vielen Dank.Ich kann eine benutzerdefinierte JS-Funktion nicht aufrufen, nachdem ich den AJAX-Inhalt zurückgegeben habe

+0

Sie holen eine '' mit Ajax? Nun, das fragt * nach Ärger. –

+0

^Vereinbart. Die meisten Funktionen und Verzögerungen treten im Tag "" auf, das Sie nicht laden. Ich denke, es gibt eine Möglichkeit, die Skripte von derselben Seite zu laden, aber ich poste zurück, wenn ich sie finde ... – Blender

Antwort

2

Die magischen Google Wörter hier sind "JSON-P" und das "On Demand Javascript" Muster. Anstatt einen Chunk zu laden, erstellen und laden Sie einen Tag. Dann wird das Javascript interpretiert, Ihre Funktion definiert, der Nagel gefunden, das Pferd beschlagen und das Königreich ist nicht verloren.

+0

Kannst du mir beibringen, wie man den JSON-P benutzt, um das zu erreichen? –

1

Dies liegt daran, dass der Js-Code, den Sie über innerHTML einfügen, nie ausgeführt wird. Sie müssen es möglicherweise aus dem HTML-Code extrahieren, führen Sie es durch eval. PrototypeS haben eine configuration option, um dies automatisch zu tun.

Ich würde Ihnen empfehlen, den js-Code zu trennen und ihn mit dem Rest Ihres js-Codes einzuschließen.

Verwandte Themen