Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2011, 16h04   #1
Invité de passage
 
Homme Benjamin
Étudiant
Inscription : juin 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2011
Messages : 15
Points : 4
Points : 4
Par défaut Lire correctement une chaîne JSON

Bonjour,

je suis en train de développer un moteur de recherche sur un site de e-commerce fonctionnant sous PrestaShop.

J'aimerais afficher les résultats d'une requête en Ajax. Lors d'une requête vers les bases de données, j'obtiens un Array, que je convertis avec json_encode() pour obtenir une chaîne telle que celle-ci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
[
    {
        "id_product":"40",
        "id_category_default":"20",
        "id_tax":"1",
        "quantity":"2",
        "price":"125.418060",
        "reduction_price":"0.00",
        "reduction_percent":"0",
        "reduction_from":"2010-06-03 00:00:00",
        "reduction_to":"2010-06-03 00:00:00",
        "active":"1",
        "id_product_attribute":"396",
        "description_short":"<p>L'horloge &agrave; tubes imite les horloges &agrave; tubes Nixie, revisit&eacute;es avec un affichage led de qualit&eacute;.<\/p>",
        "available_now":"",
        "available_later":"",
        "link_rewrite":"horloge-a-tubes",
        "meta_description":"",
        "meta_keywords":"",
        "meta_title":"",
        "name":"Horloge \u00e0 Tubes",
        "id_image":"128",
        "legend":"Horloge \u00c3\u00a0 Tubes",
        "tax_name":"TVA 19.6%","rate":"19.600",
        "category_default":"10.Cadeau Design",
        "new":"0",
        "orderprice":"149.99999976"
    },
{
...
}
]
Cette chaîne est donc composée de plusieurs tableaux, contenant chacun plusieurs attributs et caractéristiques de chaque produit correspondant à la recherche de l'utilisateur.

Dans un premier, j'aimerais savoir comment, par exemple, afficher certaines informations "brut". Par exemple, à partir du résultat ci-dessous, j'aimerais obtenir :

Horloge à Tubes
L'horloge à tubes imite les horloges à tubes Nixie, revisitées avec un affichage LED de qualité.
125.418060

Ce qui revient à avoir les informations
name
description_short
price

J'ai déjà ma fonction loadJSON qui ressemble à ceci (qui se charge de récupérer soit un fichier JSON, soit une variable JSON, d'aller chercher des infos dedans et de les afficher) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
function loadJSON(fname) 
{
    var xhr=createXHR();
    xhr.open("GET", fname,true);
    xhr.onreadystatechange=function() 
    {
        if (xhr.readyState == 4) 
        {
            if (xhr.status != 404) 
            {
                var data=eval("(" + xhr.responseText + ")");
                for(i = 0; i < 3; i++)
                {
                    //QUE METTRE ICI ?
                }
            } 
            else 
            {
                document.getElementById("zone_de_resultats").innerHTML = fname + " not found";
            }
        }
    }
    xhr.send(null);
}
Voilà, donc principalement un problème de "formatage" des données, j'imagine. N'hésitez pas à me demander des trucs si j'ai mal expliqué, et merci d'avance pour vos réponses !
benji1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h54   #2
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
Une fois que tu fais ton eval, tu récupère un tableau d'Object au sens javascript, donc tu peux le parcourir avec les opérateurs classiques (index, ".", etc...)
Du coup:
Code :
1
2
3
4
5
6
7
 
                for(i = 0; i < 3; i++)
                {
                   console.log(data[i].name);
                   console.log(data[i].descriptionShort);
                   ...
                }
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 19h33   #3
Invité de passage
 
Homme Benjamin
Étudiant
Inscription : juin 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2011
Messages : 15
Points : 4
Points : 4
Désolé pour ma réponse tardive, j'ai plusieurs projets en ce moment.

Merci beaucoup, c'est exactement ce que je cherchais ! Je vais faire des tests, et si j'ai d'autres soucis, je reviendrai en parler ici.
benji1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h41.


 
 
 
 
Partenaires

Hébergement Web