AJAX Obtenir à partir d’un arbre JSON

Je viens juste de commencer avec AJAX, en essayant d’utiliser la fonction $ .getJSON de JQuery (ou toute fonction associée, par exemple $ .load (), $ .ajax (), etc.) J’ai un fichier JSON avec une structure qui ressemble à ceci:

[ { "id": 1, "email": "[email protected]", "password": "password" }, { "id": 2, "email": "[email protected]", "password": "password" } ] 

Comment puis-je appeler un GET sur ce fichier JSON (appelons-le utilisateurs.json) pour un utilisateur avec un courrier électronique spécifique? Je pensais que ce serait le deuxième paramètre de $ .getJSON, mais cela semble renvoyer tout l’arbre.

Merci!

Réponse courte – vous ne pouvez pas le faire directement avec AJAX. jQuery peut extraire des parties de documents HTML et XML, mais pas JSON.

Réponse la plus simple – récupérez tout l’object (vous devez le faire quand même) et utilisez jsonpath pour obtenir la structure souhaitée

Réponse plus longue: récupérez l’intégralité de l’object et parcourez-le vous-même pour obtenir l’object souhaité.

Meilleure réponse – transformez l’adresse électronique en paramètre de n’importe quel script produisant le json et demandez au serveur de ne renvoyer que les données souhaitées.

Une fois que le JSON est analysé, vous le transmettez à une fonction de rappel – vous pouvez alors manipuler ce tableau à votre guise.

Vous voudrez probablement du code personnalisé:

 $.getJSON(myURL, function(data) { /* data is an array of objects */ for (var i=0, j=data.length; i 

http://api.jquery.com/jQuery.getJSON/

Vous pouvez choisir l’un des deux éléments suivants, parcourir le tableau côté client ou faire générer dynamicment le fichier users.json à chaque appel (cela suppose un langage de serveur principal comme php).

Utiliser un fichier json généré dynamicment

JS

 $.ajax({ url:"/users.json.php", data:{ useremail:"[email protected]" } type:"POST", dataType:"json", success:function(userdata){ //users data will be in userdata console.log(userdata.email); } }) 

Script de serveur (suppose PHP): users.json.php

 $email = $_POST['useremail']; //get user data based on email ... echo json_encode($userdata); die; 

fichier json généré devrait finir par produire quelque chose comme

 {"id": 1,"email": "[email protected]","password": "password"} 

Méthode en boucle: boucle dans le tableau d’utilisateurs du côté client

 $.ajax({ url:"/users.json", dataType:"json", success:function(data){ for(i=0;i