it-swarm.com.de

jQuery: print_r () Äquivalent anzeigen?

Mögliches Duplikat:
JavaScript-Datenformatierung/hübscher Drucker

Ich bin es leid, unformatierte Json-Blobs in FireBug zu betrachten.

Kennt jemand ein Äquivalent zu PHP print_r () für jQuery?

Etwas, das rekursiv eine Anzeigezeichenfolge aus einem Objekt oder Array erstellen würde, die ich auf der Seite zum schnellen Debuggen anzeigen könnte?

Vielen Dank!

64
Eli

console.log verwende ich am häufigsten beim Debuggen.

Ich konnte dies finden jQuery extension obwohl.

69

Sie können sehr einfach Reflektion verwenden, um alle Eigenschaften, Methoden und Werte aufzulisten.

Für Gecko-basierte Browser können Sie die .toSource () -Methode verwenden:

var data = new Object();
data["firstname"] = "John";
data["lastname"] = "Smith";
data["age"] = 21;

alert(data.toSource()); //Will return "({firstname:"John", lastname:"Smith", age:21})"

Aber da Sie Firebug verwenden, warum nicht einfach console.log verwenden?

44
CMS

Wie wäre es mit so etwas wie:

<script src='http://code.jquery.com/jquery-latest.js'></script>

function print_r(o){
return JSON.stringify(o,null,'\t').replace(/\n/g,'<br>').replace(/\t/g,'&nbsp;&nbsp;&nbsp;'); }
16

Sie können auch tun

console.log("a = %o, b = %o", a, b);

wo a und b Objekte sind.

9
Bill Zeller

Ich habe ein jQuery-Plugin für das Äquivalent von erstellt

<pre>
<?php echo print_r($data) ?>
</pre>

Sie können es unter https://github.com/tomasvanrijsse/jQuery.dump herunterladen

6
Tomas

Der Top-Kommentar enthält einen fehlerhaften Link zur console.log-Dokumentation für Firebug. Hier ist also ein Link zum Wiki-Artikel über Console . Ich habe damit angefangen und bin sehr zufrieden damit als Alternative zu PHP's print_r ().

Beachten Sie auch, dass Firebug Ihnen Zugriff auf zurückgegebene JSON-Objekte gewährt, ohne dass Sie diese manuell protokollieren müssen:

  • In der Konsole sehen Sie die URL der Antwort AJAX.
  • Klicken Sie auf das Dreieck, um die Antwort zu erweitern und Details anzuzeigen.
  • Klicken Sie in den Details auf die Registerkarte JSON.
  • Sie sehen die Antwortdaten in Form von Erweiterungsdreiecken.

Diese Methode benötigt noch ein paar Klicks, um auf die Daten zuzugreifen, erfordert jedoch keine Ergänzungen in Ihrem tatsächlichen Javascript und verlagert Ihren Fokus in Firebug nicht von der Konsole aus (mit console.log wird ein Link zum DOM-Abschnitt von Firebug erstellt) und zwingt Sie, danach wieder auf die Konsole zu klicken.

Für mein Geld würde ich lieber ein paar Mal klicken, wenn ich das Protokoll inspizieren möchte, anstatt es zu verfälschen, zumal die Konsole ordentlich bleibt, indem keine zusätzliche Kruft hinzugefügt wird.

5
jerclarke
$.each(myobject, function(key, element) {
    alert('key: ' + key + '\n' + 'value: ' + element);
});

Das erledigt die Arbeit für mich. :)

5
Gogol