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

jQuery Discussion :

Ajax Cross Domain => Uncaught SyntaxError: Unexpected token :


Sujet :

jQuery

  1. #1
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut Ajax Cross Domain => Uncaught SyntaxError: Unexpected token :
    Salut à tous !

    Je suis en train de développez une API pour un de mes projet.

    Donc je passe par le Cross Domain avec ajax et JSONP.

    Tout est ok sauf que le retour de mon script php distant me renvoi bien un json, mais j'ai un


    Uncaught SyntaxError: Unexpected token :
    Je vois de quoi viens l'erreur, par exemple si mon script renvoi :

    {"user": "demenvil} bah du coup dans ma fonction success :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    done(function(data) {
     
    }
    La valeur de data vaut donc => {"user": "demenvil} d'ou l'erreur non ?

    Ma question est donc comment éviter cette erreur ?? Est-ce cela ce fait côté php (distant) ou côté local avec le js ?



    Mes codes au cas ou :
    Le js :
    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
    $(document).ready(function(){
    $('.go').click(function(){
    $.ajax({
        type: "GET",
        dataType: 'json',
        url: 'http://www.ndd.fr/?page=main-api&valeur=test&callback=?',
        crossDomain : true,
        xhrFields: {
            withCredentials: true
        }
    })
        .done(function(data) {
        console.log(data);
        })
        .fail( function(xhr, textStatus, errorThrown) {
            alert(xhr.responseText);
            alert(textStatus);
        });
    });
    });

    Le php :
    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
    public function Api() {
     
            header("content-type:application/json");
     
            if (isset($_GET['url'])) {
     
                $reponse = array();
     
                $reponse['statut'] = 'ok';
     
                $reponse['infos'] = 'ceci est une infos';
     
                $reponse['bidule'] = 'un bidule';
     
                $reponse['truc'] = '123456789';
     
                echo trim(json_encode($reponse));
     
            }
     
        }
    J'ai bien mis églamenent le : header("Access-Control-Allow-Origin: *");

    Si vous avez une idée ?

    Merci bien.

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    +
    Uncaught SyntaxError: Unexpected token :
    => la réponse n'est pas un string json correctement formaté
    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 très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Du coup je met "jsonp" ?

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    non
    vu que coté serveur tu fais un json encode, cela veut dire que tu as des caractères parasites qui arrivent dans la réponse.
    Vérifie bien que tu n'aies aucun espace avant dasn ton code, et pas de BOM non plus dans ton fichier
    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
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Effectivement juste avant ma réponse du serveur dans la console de Chrome j'ai un espace qui est flanquer devant..
    Pour cela que dans le php j'avais mis un "trim".

    Du coup il peut venir de n'importe ou ? ou uniquement de la méthode appelée ?

    Edit: Je vais mettre ma page en UTF-8 déjà..

  6. #6
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Je suis bien en UTF-8 sans BOM...
    Et je ne vois pas d'espace parasite dans mon code mis à part les sauts de ligne et l’indentation du code..

  7. #7
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    regarde dans ta console ...
    vois tu la réponse json ?

    ha ok tu as un espace devant ...
    faut trouver ou le serveur colle cet espace ...

    dans le php ?
    un espace avant une balise <?php
    une directive htaccess ???
    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 !

  8. #8
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Je bosse avec un framework maison, du coup est ce que ce maudit espace peux venir de n'importe qu'elle fichier inclu avant l'appel de la class souhaité ?
    Genre sur ma gestion des routes, ou le controller maître ou encore les fichiers de config ?
    Car si cela peut arriver de n'importe quel fichier je suis dans la mouise mon framework compte bien 800-1000 fichiers..

    Dans le htaccess rien d'anormal..



    L'espace on le vois bien si je charge directement l'url de l'api avec les bon params dans le navigateur directement.

  9. #9
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    L'espace peut provenir de n'importe quel fichier appelé dans le process de génération du json

    si ton EDI permet une recherche dans l'intégralité de ton projet tu peux lancer une recherche sur " <?php" ou "\r\n<?php"
    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 !

  10. #10
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Edit :
    Le recherche sur le projet est possible avec netbeans, j'ai cherché mais cela n'a rien donné de concluant..
    ____________

    Je viens d’effectuer un test.
    J'ai créé un dossier API à la racine de mon site avec juste un index.php

    Je refait le test depuis le serveur client, alors le bon je n'ai plus d'espace avant ma sortie en JSON mais toujours la même erreur..
    Est-ce que cette erreur peut être produite par autre chose qu'un espace parasite ?

    Dans le doute j'ai même entièrement commenter mon .htaccess.
    Et aucun espace dans mon fichier et il est biene en utf-8 sans BOM..

    Je comprend vraiment pas pourquoi..

  11. #11
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    peux tu copier ici la réponse du serveur ?
    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 !

  12. #12
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Du coup étant un peu préssé j'ai complètement changer de méthode..
    Je fait un appel ajax d'une page 1 vers une page 2 qui fait tout simplement un file_get_content et me retourne dans le success la tableau en json.
    De la je peux le traiter sans problème.


    Mais au cas ou voici le retour de ma chaine en js on :

    {"statut":"ok","url_base":"http://www.site.fr","url_short":"http:\/\/ndd.fr.\/?a6urPO","url_stat":"http:\/\/surl.fr.nf\/?stat=a6urPO"}

  13. #13
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    le string json est correct, ce qui n'est pas étonnant vu qu'il est généré par json encode
    c'est donc bien coté serveur dans un de tes fichiers que tu as du BOM ou autre caractère parasite

    ce que tu peux faire c'est mettre un dataType text
    et récupérer la chaine poru supprimer les caractères superflux
    puis le parser la chaine résultante en json ...

    pour supprimer les caractères parasites, fais un $.trim() sur le string en retour de ton ajax
    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 !

  14. #14
    Membre très actif Avatar de demenvil
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste développeur
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Merci bien je vais essayer cela on verra bien ce que ça donne..

Discussions similaires

  1. [Article] AJAX cross-domain avec flXHR
    Par E.Bzz dans le forum AJAX
    Réponses: 2
    Dernier message: 06/07/2010, 13h11
  2. Réponses: 6
    Dernier message: 30/06/2010, 10h53
  3. [Ajax] Cross domain et access denied
    Par Dinaïz dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 22/03/2006, 22h29

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