jQuery.getJSON und jQuery.parseJSON geben zurück [object Object]?

Lesezeit: 4 Minuten

jQuerygetJSON und jQueryparseJSON geben zuruck object Object
rauben

BEARBEITEN: Ich habe mit dieser Frage das Abzeichen “berühmte Frage” bekommen, also dachte ich, ich komme darauf zurück und schreibe das, was mir passiert ist, ganz oben auf, damit die Leute, die es suchen, sofort eine Antwort erhalten.

Im Grunde war ich neu bei JSON. JSON ist (offensichtlich) ein Objekt, da es alle möglichen Dinge enthält! Also dachte ich: “Hey, Javascript, öffne einfach eine Warnung mit all diesen JSON-Daten”, in der Erwartung, dass mir die JSON-Daten als String zurückgegeben werden. Aber Javascript macht das nicht (was gut ist!), also war es wie “Hey, so zeigen wir Objekte an, [object Object]”.

Was ich hätte tun können, ist so etwas wie alert(obj.DATA[0][1]) und es hätte mir diesen Teil des Objekts gezeigt.

Was ich wirklich wollte, war zu überprüfen, ob ich gute JSON-Daten erstellt habe, mit denen ich hätte überprüfen können JSON.stringify.

Wie auch immer, zurück zu unseren regelmäßigen Fragen!


Ich versuche, einige JSON-Daten mit einem Ajax-Aufruf abzurufen, aber jQuery scheint mein JSON nicht zu mögen.

wenn ich sowas mache:

function init2() {
    alert("inside init2");
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        async: false,
        success: function (data) {
            alert(data);
            var obj = jQuery.parseJSON(data);
            alert(obj);
        }
    });
}

Ich bekomme dies von der Warnung (Daten):

    {"COLUMNS":["MFIRST_NAME","MLAST_NAME","MMDDL_NAME","MEMPLY_ID","MAIM_NBR","EMPLY_ID"],
    "DATA":[

["FNAME1          ","LNAME1                  ","MI1              ","000-14-7189","026-0010","000-62-7276"]      

,["FNAME2           ","LNAME2                    ","MI2              ","000-01-2302","101-1850","000-14-7189"]  

,["FNAME3           ","LNAME3                  ","MI3              ","000-91-3619","102-1000","000-01-2302"]    

,["FNAME4         ","LNAME4                  ","MI4              ","000-25-9687","102-1000","000-91-3619"]  

]}  

was JSONLint als gültiges JSON bezeichnet. alert(obj) gibt mir dies jedoch:

[object Object]

hinzufügen dataType: "json" oder "text json" lässt es einfach berichten [object Object] beim alert(data).

Ich würde das wirklich gerne herausfinden, weiß jemand warum das so ist? Ich bin ziemlich neu bei jQuery, mein Ziel ist es, ein Array für jede der Spalten zu erhalten. Derselbe Code, den ich verwende, hat auf einer anderen Seite funktioniert, wie es aussieht, was mich am meisten stört.

  • Sie konvertieren es in ein Objekt und rufen dann Alert mit diesem Objekt auf. Es sagt dann hey, das ist ein Objekt. Alles funktioniert wie es soll 🙂

    – Kory Hodgson

    9. Februar ’12 um 21:22

jQuerygetJSON und jQueryparseJSON geben zuruck object Object
Christofer Eliasson

Der alert() Die Funktion kann nur eine Textzeichenfolge anzeigen. Als einzigen Parameter nimmt es einen String oder ein Objekt an. Das Objekt wird jedoch in einen darstellbaren String umgewandelt.

Beim Abrufen von JSON über jQuery wird die $.ajax() -Methode analysiert das JSON automatisch und wandelt es für Sie in ein JavaScript-Objekt um. Deine data Variable ist daher ein JavaScript-Objekt und kein JSON-String, wie man vielleicht erwarten würde.

Seit alert() kann nur Zeichenfolgen anzeigen, wenn Sie versuchen, Sie zu warnen data Objekt wird Ihr Objekt in seine Zeichenfolgendarstellung umgewandelt. Die String-Darstellung eines JavaScript-Objekts ist [object Object].

Für Debug-Zwecke können Sie verwenden console.log(data) stattdessen. Anschließend können Sie das Objekt und seinen Inhalt über die Konsole in den Entwicklertools Ihres Browsers überprüfen.

function init2() {
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        dataType: "json",
        async: false,
        success: function (data) {
            console.log(data);
        }
    });
}

Wenn Sie aus irgendeinem Grund die JSON-Daten trotzdem alarmieren möchten, dann müssen Sie Ihre data Objekt zurück in einen JSON-String. Dazu können Sie nutzen JSON.stringify:

alert(JSON.stringify(data));

  • Das ging schnell, und ich komme mir albern vor. Danke an alle, ihr wart der Schnellste und habt mir die infos der console.log(data) gegeben, damit ihr die Antwort gewinnt!

    – Rauben

    9. Februar ’12 um 21:24

  • @Nopzen Schön, dass es dir geholfen hat!

    – Christofer Eliasson

    12. November ’13 um 21:35

1641832597 159 jQuerygetJSON und jQueryparseJSON geben zuruck object Object
Harry Forbess

es will eine Schnur

 var obj = $.parseJSON(JSON.stringify(data));

Versuchen Sie, dieses Objekt an zu senden console.log. Sie erhalten ein klareres Bild, was es enthält.

Stellen Sie auch dataType: 'json' und entfernen parseJSON denn es ist alles gleich.

  • Ja, als ich wusste, dass ich das JSON richtig bekomme, habe ich es durch $.getJSON ersetzt.

    – Rauben

    10. Feb. ’12 um 14:47

So soll es funktionieren. Ihr JSON wird zu einem Javascript-Objekt. Sie können dieses Objekt dann als normales Javascript-Objekt bearbeiten.

data.COLUMNS zum Beispiel sollte ein Array zurückgeben.

[object Object] ist die Zeichenfolgendarstellung eines Javascript-Objekts.

Versuchen Sie, auf die Eigenschaften des Objekts zuzugreifen.

alert(data.COLUMNS[0]);

1641832597 128 jQuerygetJSON und jQueryparseJSON geben zuruck object Object
ShankarSangoli

jQuery.parseJSON wandelt den Json-String in ein Json-Objekt um, sodass alert(obj) Ihnen angezeigt wird [object Object] da es ein Objekt ist.

Wenn du was sehen willst obj enthält dann verwenden console.log(obj) und überprüfen Sie dann die Konsolenprotokollnachricht.

1641832597 978 jQuerygetJSON und jQueryparseJSON geben zuruck object Object
Vladimir Salguero

$.getJSON( "UI/entidades.json.php", function(data){
	result = JSON.stringify(data);
	alert(result)
	console.log(result)
})

.

317600cookie-checkjQuery.getJSON und jQuery.parseJSON geben zurück [object Object]?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy