IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[Débutante] API eBay, variable indéfinie


Sujet :

JavaScript

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut [Débutante] API eBay, variable indéfinie
    Bonsoir tout le monde,

    Je suis en stage de première année de BTS, sans tuteur et seule développeuse de la boite. Donc je suis seule avec mes question, d'où ma présence ici !
    On me demande de faire de développer une page web permettant d'extraire des statistiques d'une recherche eBay. J'ai aussitôt pensé à utiliser une de leurs API, mais voilà, comme je suis débutante, je n'arrive pas à extraire les données que je veux de ma requête.

    J'ai suivi la doc d'eBay pour faire ce code là :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php 
     
    $product = $_POST['product'];
    ?>
     
    <html>
     
    	<head>
    		<title>eBay Search Results</title>
    		<style type="text/css">body { font-family: arial,sans-serif;} </style>
    	</head>
     
    	<body>
     
    		<h1>eBay Search Results</h1>
     
    		<div id="results"></div>
     
     
    		<script>
     
                            // Parse the response and build an HTML table to display search results
                            function _cb_findItemsByKeywords(root) {
                              var items = root.findItemsByKeywordsResponse[0].searchResult[0].item || [];
                              var html = [];
                              html.push('<table width="100%" border="0" cellspacing="0" cellpadding="3"><tbody>');
                              for (var i = 0; i < items.length; ++i) {
                                var item     = items[i];
                                var title    = item.title;
                                var pic      = item.galleryURL;
                                var viewitem = item.viewItemURL;
                                var price    = item.sellingStatus;
                                
                                if (null != title && null != viewitem) {
                                  html.push('<tr><td>' + '<img src="' + pic + '" border="0">' + '</td>' + 
                                  '<td><a href="' + viewitem + '" target="_blank">' + title + '</a></td><td>'+price+'</td></tr>');
                                }
                              }
                              html.push('</tbody></table>');
                              document.getElementById("results").innerHTML = html.join("");
                            }  // End _cb_findItemsByKeywords() function
     
                            // Create a JavaScript array of the item filters you want to use in your request
                            var filterarray = [
                              {"name":"MaxPrice", 
                               "value":"25", 
                               "paramName":"Currency", 
                               "paramValue":"USD"},
                              {"name":"FreeShippingOnly", 
                               "value":"true", 
                               "paramName":"", 
                               "paramValue":""},
                              {"name":"ListingType", 
                               "value":["AuctionWithBIN", "FixedPrice", "StoreInventory"], 
                               "paramName":"", 
                               "paramValue":""},
                              ];
     
     
                            // Define global variable for the URL filter
                            var urlfilter = "";
     
                            // Generates an indexed URL snippet from the array of item filters
                            function  buildURLArray() {
                              // Iterate through each filter in the array
                              for(var i=0; i<filterarray.length; i++) {
                                //Index each item filter in filterarray
                                var itemfilter = filterarray[i];
                                // Iterate through each parameter in each item filter
                                for(var index in itemfilter) {
                                  // Check to see if the paramter has a value (some don't)
                                  if (itemfilter[index] !== "") {
                                    if (itemfilter[index] instanceof Array) {
                                      for(var r=0; r<itemfilter[index].length; r++) {
                                      var value = itemfilter[index][r];
                                      urlfilter += "&itemFilter\(" + i + "\)." + index + "\(" + r + "\)=" + value ;
                                      }
                                    } 
                                    else {
                                      urlfilter += "&itemFilter\(" + i + "\)." + index + "=" + itemfilter[index];
                                    }
                                  }
                                }
                              }
                            }  // End buildURLArray() function
     
                            // Execute the function to build the URL filter
                            buildURLArray(filterarray);
     
                            var product = <?php echo json_encode($product); ?>;
     
                            // Construct the request
                            // Replace MyAppID with your Production AppID
                            var url = "http://svcs.ebay.com/services/search/FindingService/v1";
                                url += "?OPERATION-NAME=findItemsByKeywords";
                                url += "&SERVICE-VERSION=1.0.0";
                                url += "&SECURITY-APPNAME=*****************";
                                url += "&GLOBAL-ID=EBAY-US";
                                url += "&RESPONSE-DATA-FORMAT=JSON";
                                url += "&callback=_cb_findItemsByKeywords";
                                url += "&REST-PAYLOAD";
                                url += "&keywords="+encodeURI(product);;
                                url += "&paginationInput.entriesPerPage=3";
                                url += urlfilter;
     
     
                            // Submit the request 
                            s=document.createElement('script'); // create script element
                            s.src= url;
                            document.body.appendChild(s);
     
                            // Display the request as a clickable link for testing
                            document.write("<a href=\"" + url + "\">" + url + "</a>");
       
                    </script>
     
    	</body>
     
    </html>

    et là réponse que j'en tire commence comme ça :

    Nom : Sans titre.png
Affichages : 142
Taille : 41,3 Ko

    C'est la ligne surligné qui m'intéresse. Je n'arrive à définir ma variable pour extraire le prix de l'item.
    J'ai essayé plusieurs chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var price = item.sellingStatus; // //Retourne [object Object]
    var price = item.currentPrice; //Retourne "undefined"
    var price = item.__value__; //Retourne "undefined"
    et d'autres mais à chaque fois ma variable n'est pas défini ou bien j'ai une erreur javascript ou bien cela m'affiche [object Object].

    Pouvez vous m'aider svp ?

    Merci d'avance et bonne soirée

  2. #2
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    tu devrai passer ton objet JSON dans un validateur/formateur (ex : https://jsonformatter.curiousconcept.com/ )
    et ça te permettra d'y voir plus clair pour retrouver le chemin jusqu'a l’élément que tu recherche

    Autre solution créer un fonction récursive pour parcourir l'ensemble de l'objet Json et qui s'arête lorsqu'il y retrouve la clé de ton élément rechercher en renvoyant sa valeur.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Ok merci du conseil, je ne connaissais pas json formatter, c'est très pratique !

    Alors pour la première solution ça me donne ça (j'ai un peu raccourcis mais j'ai mis les objets au bon niveau) :

    Nom : imageForum.png
Affichages : 122
Taille : 30,4 Ko

    Mais je ne sais toujours pas comment sélectionner le prix.

    Et pour la deuxième solution, je ne vois pas trop comment faire ça...

    Quelqu'un peut m'aider svp ?

    Merci d'avance et bonne journée
    Images attachées Images attachées  

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    et bien il suffit juste de suivre le chemin.

    dans ton cas tu a du commencé par affecter ton json à une variable json, ( ex : var toto = fct_RetourJSON(XYZ); )
    pour récupérer ensuite les différentes données qui y sont présentes :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Prix_0 = toto.searchResult[0].item[0].sellingStatus[0].currentPrice[0].__value__;
    var Prix_1 = toto.searchResult[0].item[1].sellingStatus[0].currentPrice[0].__value__;
    var Prix_2 = toto.searchResult[0].item[2].sellingStatus[0].currentPrice[0].__value__;

    quand il y a un crochet on est dans un tableau, donc on se retrouve aussi avec un crochet aussi pour retrouver la variable.

    sur searchResult il existe visiblement 3 occurrences => variable toto.searchResult[0].@count qu'il faut sans doute parser pour l'utiliser en integer: parseInt(toto.searchResult[0].@count)Quand à l'autre solution c'est nettement plus compliqué à coder.

    sinon en JavaScrit on peut accéder de différentes manières pour accéder au variables json;

    les 2 principales sont :
    ( pour preference = { "Babar" :'Thé" , "Winnie ourson": "miel" }; )

    méthode 1
    goutBabar = preference.Babar; // <= Thé .

    méthode 2
    GoutWinnie = preference["Winnie ourson"]; // le caractere espace rend impossible la première méthode.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Toutes mes excuses, j'avoue avoir oublié de te répondre.
    Ta réponse m'a bien aidé mais j'ai expérimenté avant de te remercier et du coup j'ai zappé. C'est bien la première fois et j'en suis désolé !

    Du coup en fonction de mon code, j'ai résolu le problème en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var price = item.sellingStatus[0].convertedCurrentPrice[0].__value__;
    Merci à toi psychadelic pour ton temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant - Avis] même variable dans plusieurs pages...
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/12/2004, 22h50
  2. [débutante][API] basculer vers une autre appli en VB6
    Par zazaraignée dans le forum Windows
    Réponses: 7
    Dernier message: 04/06/2004, 15h15
  3. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  4. Réponses: 5
    Dernier message: 28/04/2004, 16h06
  5. [JSP][débutant] recupérer des variables...
    Par yass dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/04/2004, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo