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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    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
    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 : 153
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
    Membre extr�mement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    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 confirm�
    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
    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 : 130
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
    Membre extr�mement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    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 confirm�
    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
    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