2016-04-06 5 views
0

Ich mache daskonnte nicht Eigenschaftswert erhalten Javascript Notation

var routeId = $('#route option:selected').val(); 
console.log(routeId, routeId["id"]); 

und ich führen unter

{"id":560,"name":"Coba wei","description":"f","is_deleted":0,"operator_id":31,"from_city_id":201,"to_city_id":46} undefined 

Ich erwarte, dass ich 560 bekommen, die die zweite param meiner console.log ist(), aber ich wurde undefiniert. Wieso ist es so? Wenn ich es hier so mache https://jsfiddle.net/hfhfug0b/, kann ich den Wert von ID erhalten.

+0

'val()' bekommt Sie eine Zeichenfolge. Sie müssen 'JSON.parse (str)' verwenden, um es zu einem Objekt wie in Ihrer Geige zu machen. – Andy

Antwort

2

Es scheint, dass routeId JSON ist. Sie müssen es analysieren, wenn Sie es auf ein Objekt konvertieren möchten:

var routeId = JSON.parse($('#route option:selected').val()); 
console.log(routeId, routeId["id"]); 
1

Alles, was von DOM gelesen wird, ist String. Um es als JSON zu verwenden, müssen Sie es mit JSON.parse() analysieren.

var routeId = JSON.parse($('#route option:selected').val()); 

Auch, wie ich in Select option base on property key in value Antwort haben empfehlen, sollten Sie prüfen, mit data-* Attribut benutzerdefinierte Daten auf den HTML-Elemente zu speichern.

+0

Beachten Sie, dass "val" auch Zahlen oder Arrays (aber kein anderes Objekt) zurückgeben kann, obwohl jQuery die Konvertierung durchführt. – Paulpro

Verwandte Themen