2012-08-28 2 views
0

Le JSON:Accès aux données avec syntaxe à point

{ 
    "count": 1, 
    "rows": [ 
     { 
      "user_id": "7", 
      "lat": "48.452583", 
      "lng": "-123.545052", 
      "distance": "0.4852177729308128" 
     } 
    ] 
}​ 

Cela vient dans mon function(data) et je suis en train d'accéder count puis le user_id ..

downloadUrl(searchUrl, function(data) { 
    alert("Locations Found: " + data[0].count); 
}); 

data.count, data[0].count. .. ne fonctionne pas. Et je dessine un blanc sur la façon d'y accéder.

+0

'data.count' est correct. Êtes-vous sûr de le recevoir en JSON? (Indice: vous avez besoin de 'dataType:" json "'.) – Ryan

+0

Analysez-vous le JSON? Si vous utilisez AJAX, définissez dataType sur json ou utilisez $ .parseJSON –

+0

J'ai ajouté la fonction que j'utilise ci-dessus. – dcolumbus

Répondre

3

Si votre data est une chaîne (non-type de données: JSON) alors vous devez analyser comme suit

var obj=$.parseJSON(data); 

Ensuite, utilisez

obj.count; 
obj.rows[0].user_id; 
+2

vous pouvez utiliser 'JSON.parse()' si vous n'utilisez pas Jquery – Ankur

+2

Oui, mais la balise 'jQuery' est utilisée dans la question, donc j'ai répondu jQuery. –

+0

@AnkurMittal, JSON.parse() n'est pas compatible avec les navigateurs croisés – Jashwant

0

essayer cette

data = {"count":1,"rows":[{"user_id":"7","lat":"48.452583","lng":"-123.545052","distance":"0.4852177729308128"}]} 
data.count 
data.rows[0].user_id 
0

Est-ce vraiment les données d'un objet ou tout simplement une chaîne. Vous pouvez déboguer le type avec la plupart des consoles du navigateur en utilisant console.log (typeof data) ou encore alert (typeof data).

+0

C'est une chaîne ... c'est clairement mon problème. – dcolumbus