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

AJAX Discussion :

Parse error API DeskPro


Sujet :

AJAX

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut Parse error API DeskPro
    Bonjour à tous, je travaille actuellement sur l'utilisation de l'API Deskpro (site pour la gestion de tickets, chats...).
    Donc à partir de la racine de l'API, j'ai pu faire des appels sur différentes méthodes et maintenant j'ai juste crée une requête Ajax que j'ai rajouté dans mon projet qui devra récupérer les infos de l'API.

    Mon problème est que lorsque je lance la page qui contient la requête Ajax , cette dernière est bien exécutée mais part sans cesse dans le error avec une erreur "parseerror" et l'erreur "Uncaught SyntaxError: Unexpected token :" dans la console chrome et l'erreur "SyntaxError: missing ; before statement" pour firefox!

    Quand je localise ces erreurs, elles me ramènent vers la deuxième ligne de mon json récupéré! Pourtant, en passant par un validateur en ligne, le json est valide!

    Ma requête Ajax:
    Code : 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
    $.ajax({
                 type: 'GET',
                 url: 'http://xx.xx.com/api/feedback/1?DP-AGENT-ID=1947',
                 dataType: 'jsonp',
                 crossDomain: true,
                 success: function (result) {
                     console.log("TEST");
                     alert("Réussite: " + JSON.parse(result));
                 },
                 error: function(xhr, exception)
                 {
                     var msg = '';
                     if (xhr.status === 0) {
                         msg = 'Not connect.\n Verify Network.';
                     } else if (xhr.status == 404) {
                         msg = 'Requested page not found. [404]';
                     } else if (xhr.status == 500) {
                         msg = 'Internal Server Error [500].';
                     } else if (exception === 'parsererror') {
                         msg = 'Requested JSON parse failed.';
                     } else if (exception === 'timeout') {
                         msg = 'Time out error.';
                     } else if (exception === 'abort') {
                         msg = 'Ajax request aborted.';
                     } else {
                         msg = 'Uncaught Error.\n' + xhr.responseText;
                     }
                     console.log("Echec 1: " + msg + " " + exception);
                 },
                 beforeSend: function (xhrBefore) {
                     xhrBefore.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
                     console.log("Authorization: " + btoa(username + ":" + password));
                 }
             })
    Console firefox:

    Nom : pb ajax.png
Affichages : 188
Taille : 52,7 Ko

    Donc voilà, je sèche, j'essaie plein de choses mais je n'arrive pas à trouver!
    Donc si vous avez des solutions pour moi, je suis preneur!

    Merci d'avance et bonne journée!

    Cordialement!

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Je pense il faut testé pour en être sur : tu reçoit des données déjà en JSON et tu souhaite les parser une nouvelle fois, essaye de oter le JSON.parse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //JSON.parse(result));
    console.log(result);

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    Le problème c'est que je ne rentre même pas dans le success, même si je ne renseigne rien dans le function du success!

    Je passe toujours dans l'error et si je teste la valeur du status, il me retourne 200!

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    Bonjour à tous,

    Je suis toujours bloqué sur ce sujet. Je veux récupérer du JSON dans mon success mais à chaque fois j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SyntaxError: unexpected token: ':'
    Cette erreur me renvoie vers mon JSON récupéré et plus précisément vers la 2ième ligne de celui ci qui est : Clairement, l'erreur porte sur les ":" de cette ligne mais je n'arrive pas à comprendre pourquoi alors que mon JSON est valide sur tous les validateurs en ligne que j'ai testé!

    Donc voilà, si quelqu'un a une idée j'aimerai bien l'entendre!

    Merci d'avance et bonne journée!

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    C'est une erreur du a un mauvais formatage du json en réponse de ta requête. Du doit vérifier et corriger ton erreur en amont, la ou tu génère ce JSON pour le renvoyer a ta page.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    Bonjour,

    Je suis passé sur le chat hier pour discuter de mon problème, on m'a dit que le problème viendrait du fait que les 2 sites ne sont pas sur le même domaine, du coup j'ai dû rajouter l'entête Access-Control-Allow-Origin. Mais ça ne fonctionne toujours pas.
    Et j'en ai profité pour changer le type de retour en type text.

    Merci et bonne journée.

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par xKryckx
    l'entête Access-Control-Allow-Origin. Mais ça ne fonctionne toujours pas.
    Dans quel fichier est-il placé?, Sur quel domaine est-il placé?

    Cette directive CORS doit être placé soit ta page PHP ou vhost ou htaccess

    [ ------> ] ressource extérieur

    Domain1 (demande) ----> Domain2 (Access-Control-Allow-Origin Domain1)
    Domain2 (demande) ----> Domain1 (Access-Control-Allow-Origin Domain2)

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    Sachant que mon site 2 est un site c# qui doit appeler les données du site 1 qui lui est codé en php, je dirai qu'il faut que l'entête soit dans le site 1.

    Si mon site 2 est en local (pour du test), je vais avoir une adresse en 127.0.0.1 mais si le site 1, lui, est en ligne, je dois mettre l'adresse du site 1 et non du site 2 n'est ce pas?

    Merci en tout cas!

  9. #9
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Salut si ton site 2 en C# est le site qui a besoin de la ressource du site 1 PHP alors la directive header doit être contenue dans le site 1 PHP qui autorise le domaine du site 2 en C#.

    Tu as donc le choix d'implémenté ton header et la bonne directive sur le site qui partage la ressource soit le site 1.
    En ce qui concerne un test local vers le net c'est ton erreur est c'est pour cela que ça ne marche pas a moins de redirigé les ports ou mettre cette machine avec la bonne IP INET ou IPV4 qui permettra de mettre ta machine de test en ligne avec son nom de domaine ton FAI en générale suffit de le noté en allant sur le site http://www.mon-ip.com/ et noté le Son nom d'hôte associé celui que tu doit référencer dans ton VHOST avec un PORT différent du 80 pour ne pas casser la DMZ. Il faut bien entendu ouvrir le port en question 8080 par exemple depuis le site 2 en C# depuis la console du FAI afin que ce site soit accessible sur le net et a partir de là tu pourra effectuer tes test. Sinon en PHP il y a CURL mais aussi la méthode http://php.net/manual/fr/function.file-get-contents.php qui est un moyen d'outrepasser cette restriction

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    C'est complet et je t'en remercie!

    Vu que je n'ai pas accès au code du site 1, je pense que je vais push mes modifs du site 2 en prod et le tester depuis la prod.
    A voir, si ça fait quelque chose! ^^

Discussions similaires

  1. Parse Error...
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 09/10/2005, 02h23
  2. parse error
    Par Romain93 dans le forum C
    Réponses: 6
    Dernier message: 28/09/2005, 21h03
  3. je ne comprend pas un parse error
    Par bibi_64 dans le forum C
    Réponses: 3
    Dernier message: 21/09/2005, 14h00
  4. XML Parsing Error: not well-formed
    Par localhost dans le forum Valider
    Réponses: 5
    Dernier message: 16/06/2005, 14h20
  5. Parse error
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/02/2005, 10h55

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