461 Stimmen

Kann nicht auf Objekteigenschaft zugreifen, obwohl sie in einem Konsolenprotokoll angezeigt wird

Unten finden Sie die Ausgabe dieser beiden Protokolle. Das erste zeigt deutlich das gesamte Objekt mit der Eigenschaft, auf die ich zugreifen möchte, aber in der nächsten Zeile des Codes kann ich nicht darauf zugreifen mit config.col_id_3 (sehen Sie das "undefined" im Screenshot?). Kann das jemand erklären? Ich kann auf jede andere Eigenschaft zugreifen, außer auf field_id_4.

console.log(config);
console.log(config.col_id_3);

Das ist, was diese Zeilen in der Konsole ausgeben

Konsolenausgabe

2voto

Karthikeyan M Punkte 51

In meinem Fall ist es einfach so, dass ich die Daten im Format eines Modells, wie myMethod(data:MyModelClass), erhalte, aber das empfangene Objekt vom Typ String war. Deshalb erhalte ich den Inhalt in console.log(data). Die Lösung besteht einfach darin, das JSON (in meinem Fall) zu parsen.

const model:MyMOdelClass=JSON.parse(data);

Gedacht, es könnte nützlich sein.

2voto

Oleksa O. Punkte 635

Ich hatte ein ähnliches Problem, hoffe die folgende Lösung hilft jemandem.
Du kannst die setTimeout Funktion verwenden, wie einige hier vorgeschlagen haben, aber du weißt nie genau, wie lange dein Browser braucht, um dein Objekt zu definieren.

Anstatt dessen würde ich die setInterval Funktion empfehlen. Sie wird warten, bis dein Objekt config.col_id_3 definiert ist und dann deinen nächsten Code ausführen, der spezifische Objekteigenschaften benötigt.

window.addEventListener('load', function(){

    var fileInterval = setInterval(function() {
        if (typeof config.col_id_3 !== 'undefined') {

            // hier die Arbeit erledigen

            clearInterval(fileInterval); // Intervall löschen
        }
    }, 100); // alle 100ms prüfen

});

2voto

russiansummer Punkte 1271

Wenn Sie TYPESCRIPT und/oder ANGULAR verwenden, könnte es daran liegen!

.then((res: any) => res.json())

Das Setzen des Antworttyps auf any hat dieses Problem für mich behoben. Ich konnte nicht auf Eigenschaften der Antwort zugreifen, bis ich res: any gesetzt habe

Sehen Sie sich diese Frage an Eigenschaft '_body' existiert nicht im Typ 'Response'

1voto

rey_coder Punkte 402

Ich hatte ein ähnliches Problem oder vielleicht nur ein ähnliches.

In meinem Fall griff ich auf Eigenschaften eines Objekts zu, aber eine war undefiniert. Ich fand heraus, dass das Problem ein Leerzeichen im serverseitigen Code war, während ich den Schlüssel und den Wert des Objekts erstellte.

Mein Ansatz war folgender...

Erstelle mein Objekt... beachte das Leerzeichen in 'word'

Antwort, die ich von meinem REST-API erhalte

Javascript-Code zum Protokollieren der Werte

Protokollergebnisse von Konsole

Nachdem ich das Leerzeichen aus dem serverseitigen Code entfernt hatte, mit dem ich das Objekt erstellt, konnte ich nun auf die Eigenschaft zugreifen, wie unten gezeigt...

Ergebnis nach Entfernen von Leerzeichen

Dies ist möglicherweise nicht das Problem im Fall der Frage des Themas, war jedoch in meinem Fall so und könnte auch für jemand anderen der Fall sein. Hoffe es hilft.

1voto

Zapnologica Punkte 20986

Ich bin auch gerade auf dieses Problem gestoßen, und um es kurz zu machen, mein API hat einen String-Typ zurückgegeben und nicht JSON. Es sah also genau gleich aus, wenn man es ins Protokoll gedruckt hat, aber immer wenn ich versuchte, auf die Eigenschaften zuzugreifen, bekam ich einen undefinierten Fehler.

API Code:

var response = JsonConvert.DeserializeObject(String vom Objekt);
return Json(response);

vorher habe ich einfach zurückgegeben:

return Json(String vom Objekt);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X