2011-07-01 8 views
0

Je suis nouveau à JSON et vraiment aux prises avec cela. J'ai lu d'innombrables autres articles et pages Web, mais je n'arrive pas à le comprendre.Parse JSON JSON avec JQuery

J'utilise PHP pour JSON (à partir des données de la base de données) avec ce code:

header('Content-type: application/json'); 
    echo json_encode($data); 

Voici le JSON:

{ 
    "x0": { 
     "id": "1", 
     "name": "Rob", 
     "online": "1", 
     "gender": "m", 
     "age": "29", 
     "height": "5'8''", 
     "build": "Average", 
     "ethnicity": "White", 
     "description": "Art geek person", 
     "looking_for": "Anything", 
     "image": "4fs5d43f5s4d3f544sdf.jpg", 
     "last_active": "29-06-11-1810", 
     "town": "Manchester", 
     "country": "UK", 
     "distance": 0.050973560712308 
    }, 
    "x1": { 
     "id": "2", 
     "name": "Dave", 
     "online": "1", 
     "gender": "m", 
     "age": "29", 
     "height": "5'8''", 
     "build": "Average", 
     "ethnicity": "White", 
     "description": "Art geek person", 
     "looking_for": "Anything", 
     "image": "4fs5d43f5s4d3f544sdf.jpg", 
     "last_active": "29-06-11-1810", 
     "town": "Manchester", 
     "country": "UK", 
     "distance": 0.050973560712308 
    } 
} 

Je pense que le problème que je vais avoir est que le JSON est imbriqué (peut-être tort là-bas) ?.

C'est le JQuery:

function fetchProfiles() { 
    var url='http://url.com/here'; 
    var i = 0; 
    var handle = 'x'.i; 

    $.getJSON(url,function(json){ 
     $.each(json.results,function(i,profile){ 
      $("#profiles").append('<p><img src="'+profile.handle.image+'" widt="48" height="48" />'+profile.handle.name+'</p>'); 
      i++; 
     }); 
    }); 
} 

Toutes les idées ou suggestions appréciées!

Merci!

+1

Est-ce que votre JSON ressemblent exactement comme ça? Je m'attendrais à un tableau ... Et a-t-il vraiment une clé racine appelée "résultats"? – polarblau

+0

Le niveau supérieur d'un fichier JSON peut être un objet ou un tableau. – Quentin

+0

Oui c'est la sortie JSON de PHP. Bon point sur .results - copier et coller l'erreur là. –

Répondre

3

Je pense que le problème est que vous appelez $ .each sur json.results (si le json est exactement ce que vous nous avez montré).

vous sholud faire:

$.each(json,function(i,profile){ 
     $("#profiles").append('<p><img src="'+profile.image+'" widt="48" height="48" />'+profile.name+'</p>'); 
    }); 

regard sur le violon ici: http://jsfiddle.net/ENcVd/1/ (il alerst la propriété d'image vous objet JSON)

+0

Merci pour votre réponse - l'exemple fonctionne parfaitement. Je pense que mon problème pourrait être avec l'URL que je tire du JSON. Il affiche dans le navigateur, mais en utilisant le code jsfiddle il alerte juste indéfini? –

+0

Toujours dans la console Firebug, l'URL GET est rouge, mais la réponse du serveur est 200 OK? –

+0

Peut-être que le problème est que le serveur sur lequel vous effectuez la requête n'est pas sur le même domaine de la page faisant la demande. Est-ce vrai? En tout cas, si vous avez un violon complet, je vais essayer de vous aider! –