2011-01-17 4 views
2

kommt Also benutze ich in meiner Website jquery, um Daten durch Ajax zu holen. Als Teil der Ajax-Antwort kommt auch ein Teil des Javascript-Codes, der ausgeführt wird. Das Problem ist, wie dieses Javascript in Firebug oder anderen Tools zu debuggen ist. Das ist meine Erfahrung so weit:Debugging JavaScript-Code, der als Teil von Ajax Response

  • setzen Debugger; funktioniert nicht
  • Für einige Javascript, kann den Haltepunkt nicht festlegen, da das Skript noch nicht geladen ist.
  • auch wenn diese neue JavaScript ruft einige andere Funktion, das ist bereits geladen (dh ich kann es in Firebug sehen und einen Haltepunkt gesetzt ist), dass Haltepunkt in dieser Funktion noch nicht
  • ausgelöst wird

jedoch die Javascript tut ausführt normal und sogar Dinge wie console.log funktioniert, aber kann nicht scheinen, um es zu debuggen ..

+0

Das hört sich für mich als schlechtes Design Entscheidung getroffen: mit Verlaub, ich glaube nicht, dass Sie Ihren Code als Antwort auf eine 'XMLHttpRequest' (und mit' eval' oder die Funktion Konstruktor senden sollte diesen Code auszuführen). –

+0

Ich würde auch sagen, dass es mehr wie falsche Design-Entscheidung klingt .. Können Sie uns mehr erzählen, warum laden Sie dieses Skript zusammen mit Daten? Es sollte einfach eine andere Lösung sein, die gut unterstützt wird, und einfach zu debuggen – Maxym

+0

in der Antwort, ich habe Code wie $ (Dokument) .ready (Funktion {..}), also statt Code im Erfolgshandler von ausgeführt der Ajax Anruf, ich sende das Javascript als Teil der Antwort, um bestimmte Aufgabe zu erfüllen ... nicht sehen, was ist falsch mit diesem Ansatz? – user133371

Antwort

2

ich weiß, Firebug und die IE-Entwickler-Tools werden die Debugger-Anweisung respektieren. Also würde ich das auf den Anfang der Antwort werfen.

debugger; 

func1(); 
func2(); 
+0

leider Debugger; Anweisung funktioniert nicht in diesem Szenario, d. h. wo Javascript als Teil der Ajax-Antwort ausgeführt wird – user133371

2

Wenn Sie Google Chrome verwenden, überprüfen Sie die Antwort auf diese Frage aus: https://stackoverflow.com/a/10929430/482916

Sie müssen in der Ajax-geladen JS-Skripte den folgenden Kommentar hinzu:

//@ sourceURL=dynamicScript.js 

wo dynamicScript.js ist der Name des Skripts, das in der Konsole angezeigt wird.

+1

Dies funktioniert einwandfrei, sollte diese Antwort als die richtige Antwort markiert werden! :) – Tieme