Ich erhalte die folgende Zeichenfolge:

[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]

Ich möchte die Hintergrundfarbe meines TR basierend darauf ändern, ob die ID dieses TR im JSON den Wert "richtig" oder "falsch" hat.

Wie kann ich den Wert eines einzelnen Elements von JSON erhalten? Ich habe versucht:

            success: function (result) {
                // update with results
                //alert(JSON.stringify(result));
                //$('#myDiv').html(JSON.stringify(result));

                // non of these work
                alert(result[0]);
                alert(result[key]);
            },
0
user1477388 8 Okt. 2012 im 20:19

5 Antworten

Beste Antwort

Sie können $.each() verwenden, um das Array von Objekten zu iterieren.

$.each(result, function(i, item) {
    alert(item.Key);
});

Im Rückruf zu $.each() ist item ein Verweis auf das aktuelle Element im Array, das iteriert wird.

Dann verwenden Sie einfach den normalen Eigenschaftszugriff, um den Wert für die Eigenschaft Key abzurufen.


Natürlich können Sie auch eine herkömmliche for - Anweisung verwenden, um das Array zu schleifen.

for (var i = 0; i < result.length; i++) {
    var item = result[i];
    alert(item.Key);
}

All dies setzt voraus, dass Ihre Antwort die richtige Einstellung Content-Type hat oder Sie $.ajax() dataType:"json" gegeben haben.

2
I Hate Lazy 8 Okt. 2012 im 16:22

Stellen Sie sicher, dass Sie in Ihrer Ajax-Anfrage .. Datentyp: 'json' angeben

Versuchen

alert(result[0]["key"]);  // For the first

//

$.each(result , function(i) {
    console.log( 'Key is - ' + result[i]["Key"] + ' -- Value is - ' + result[i]["Value"]);
});

Überprüfen Sie FIDDLE Wenn Sie

0
Sushanth -- 8 Okt. 2012 im 16:30

Sie geben nicht an, aber wenn Sie davon ausgehen, dass Ihr Ajax-Code eine JSON-Zeichenfolge als Antwort erhält, wird dieser Text tatsächlich erneut JSON-verknüpft, sodass er zu einer doppelt codierten Zeichenfolge wird.

Jquery kann dies automatisch wieder in eine native Struktur für Sie dekodieren, wenn Sie feststellen, dass Sie json als Antwort erwarten, z.

$.ajax({
   dataType: 'json',
   etc...
});

Dann hättest du es einfach

alert(result[0]['key']);

Oder

data = jquery.parseJSON(result);
alert(data[0]['key']);
0
Marc B 8 Okt. 2012 im 16:23

Sie können Ihr JSON-Format in Object konvertieren. In Ihrer Situation handelt es sich um ein Array, sodass Sie mit forEach überprüfen können, was Sie möchten.

Versuche dies

var obj= JSON.parse( '[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]' );



obj.forEach(function(i){alert(i.Key);alert(i.Value) })
1
Anton Baksheiev 8 Okt. 2012 im 16:26

Schauen Sie sich das an: http://goessner.net/articles/JsonPath/.I habe es nicht verwendet, sieht aber so aus und ist ein guter Weg, um Werte aus einer Json-Struktur zu erhalten.

1
DotNetWala 8 Okt. 2012 im 16:30