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

Bibliothèques & Frameworks Discussion :

Parser du JSON aprés une requête Ajax [Prototype]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut Parser du JSON aprés une requête Ajax
    Bonjour,
    J'utilise l'api myspace opensearch qui est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://api.myspace.com/opensearch/people?searchTerms='greg'
    Ca retourne bien du json dans ma page, mais lorsque je fais la meme chose en requete Ajax je n'ai rien en réponse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    url = "http://api.myspace.com/opensearch/people?";
    popup = function(e){alert(e.responseText)};
    new Ajax.Request(url, {
      method:'get',
      parameters:{searchTerms:'celine'},
      onComplete: popup
    });
    Qu'est ce que je fais mal?

    Greg

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ajax te retourne comme son nom l'indique du texte dans le responseText
    il faut le convertir en json


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    url = "http://api.myspace.com/opensearch/people?";
    popup = function(retour){
     myjson=eval("("+Ajax.responseText+")")
     };
    new Ajax.Request(url, {
      method:'get',
      parameters:{searchTerms:'celine'},
      onComplete: popup(Ajax.responseText)
    });
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Ajax te retourne comme son nom l'indique du texte dans le responseText
    il faut le convertir en json
    J'ai converti comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    url = "http://api.myspace.com/opensearch/people?";
    popup = function(e){alert(e.responseText.evalJSON())};
    new Ajax.Request(url, {
      method:'get',
      parameters:{searchTerms:'celine'},
      onComplete: popup
    });
    Mais de toute facon le responseText est vide alors il n'a rien à convertir
    Dans ton code ou le mien, il n'alert rien.



    [Edit]
    J'ai rajouté ceci, trouvé sur la doc prototype.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    url = "http://api.myspace.com/opensearch/people?";
    popup = function(e){
      alert(e.responseText.evalJSON(true));
    };
    new Ajax.Request(url, {
      method:'get',
      requestHeaders: {Accept: 'application/json'},
      parameters:{searchTerms:'celine'},
      onComplete: popup
    });
    Mais ca ne change rien

    [/edit]

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    sur le oncomplet pourquoi passes tu par e qui n'est pas crossbrowser ?

    lance ta fonction popup en lui passant comme paramètre le responseTExt


    que te retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    new Ajax.Request(url, {
      method:'get',
      requestHeaders: {Accept: 'application/json'},
      parameters:{searchTerms:'celine'},
      onComplete: alert(Ajax.responseText) // ou this.responseText
    });
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    sur le oncomplet pourquoi passes tu par e qui n'est pas crossbrowser ?

    lance ta fonction popup en lui passant comme paramètre le responseTExt


    que te retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    new Ajax.Request(url, {
      method:'get',
      requestHeaders: {Accept: 'application/json'},
      parameters:{searchTerms:'celine'},
      onComplete: alert(Ajax.responseText) // ou this.responseText
    });
    Je t'interromps tout de suite, e n'a rien n'a voir avec du crossbrowser, c'est le paramètre qui est passé à la fonction onComplete exécuté par l'objet Ajax lors de la réponse à la requete ajax.

    en gros l'objet ajax fait ceci :
    onComplete(xhrResult, ....);
    d'ou l'importance de l'utilisation de e dans ce context, et e n'a rien a voir avec un event.

  6. #6
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    sur le oncomplet pourquoi passes tu par e qui n'est pas crossbrowser ?

    lance ta fonction popup en lui passant comme paramètre le responseTExt
    J'ai toujours le meme résultat, responseText est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    url = "http://api.myspace.com/opensearch/people";
    new Ajax.Request(url, {
      method:'get',
      requestHeaders: {Accept: 'application/json'},
      parameters:{searchTerms:'celine'},
      onComplete: function(){alert(Ajax.responseText);}
     
    });

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par Gregory.M Voir le message
    J'ai toujours le meme résultat, responseText est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    url = "http://api.myspace.com/opensearch/people";
    new Ajax.Request(url, {
      method:'get',
      requestHeaders: {Accept: 'application/json'},
      parameters:{searchTerms:'celine'},
      onComplete: function(){alert(Ajax.responseText);}
     
    });
    On ne peut pas faire d'ajax crossdomain tout simplement.

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

Discussions similaires

  1. [AJAX] Récupérer les clés d'un json après une requête ajax
    Par Nico_SAS dans le forum jQuery
    Réponses: 4
    Dernier message: 25/06/2014, 14h18
  2. Réponses: 1
    Dernier message: 01/10/2010, 18h07
  3. Renvoyer un tableau après une requête AJAX
    Par franquis dans le forum jQuery
    Réponses: 6
    Dernier message: 06/08/2010, 13h05
  4. Charger CKEditor après une requête AJAX
    Par Shirraz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2010, 02h00
  5. Utilisation events après une requête ajax
    Par Maxow dans le forum jQuery
    Réponses: 1
    Dernier message: 23/08/2009, 23h50

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