it-swarm.com.de

TypeError: Ungültiger 'In'-Operand obj in Version 1.9.1 von jquery

$.ajax({
    async: false,
    type: "POST",
    url: url+"module/listing/"+projectId,
    data: "ajax=true",
    success: function(response) {
        $.each(response, function(key, val) {
        alert(val.id);
        });
    }
});

Das ist mein Code. Ajax-Erfolg Ich erhalte eine JSON-Antwort. Die Antwort erfolgt im Array-Format. Und ich möchte die Antwort alarmieren. Aber immer Fehler "TypeError: invalid 'in' operand obj" für JQuery 1.9.1 Version.

10
user2392605
success: function(response) {
        response=JSON.parse(response);
        $.each(response, function(key, val) {
        alert(val.id);
        });
    }
10
Amit Garg

Ich habe diesen Fehler erhalten, nachdem ich zweimal ein JSON-Array codiert habe. Vielleicht hilft es jemandem.

3
Octavian

Ich hatte das gleiche Problem. Der Fehler wird von der jQuery-Funktion 'isArraylike (obj)' in der folgenden Zeile ausgelöst:

return type === "array" || type !== "function" &&
    ( length === 0 ||
    typeof length === "number" && length > 0 && ( length - 1 ) in obj );

Der Javascript 'in'-Operator benötigt ein Objekt als Operand. Wenn Sie also jQuery.type (response) ausführen, wird möglicherweise etwas anderes als ein Objekt angezeigt (z. B. string oder null).

Amits Antwort sollte also funktionieren - wenn nicht, überprüfen Sie die Art der Antwortdaten und arbeiten Sie von dort aus.

2
webmaster

Verwenden Sie dataType: "json", damit jQuery die Antwort als JSON analysiert. Es wird Ihr Problem lösen.

2
Codrutz Codrutz

Versuchen Sie dieses, arbeitete für mich

$.each(eval(response), function(key, val)

Aus irgendeinem Grund (den ich nicht kenne) wird die Antwort als Zeichenfolge und nicht als Objekt betrachtet, daher müssen Sie sie mit eval() 'konvertieren'.

0
Athafoud

In meinem Fall definierte ich local nicht als Array, sondern als String. JSON.parse es hat den Trick gemacht.

0
fotanus

Ich habe diese Fehlermeldung erhalten, als ich ein Array mit Spaltennamen an jQuery DataTables gesendet habe. Das Array muss ein Array von Objekten sein, nicht nur ein Array von Namen. Link zu Spalten

BAD Spalten: ["Column1", "Column2"]

GUTE Spalten: [{title: "Column1"}, {title: "Column2"}]

0
Malcont3nt