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 :

Unterminated string literal


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut Unterminated string literal
    Bonjour,
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{//alert(eval("("+containP+")"));
    var jsQ=eval("("+aJ.responseText+")");//ATTENTION SI ERREUR GENRE ' PAS D'OBJET JSON MAIS STOKAGE QUAND MEME DANS LOCALSTORAGE ET GROSSE ERREUR !SE RETROUVE PLUS HAUT  
    //Si ' 1er \ Ok pour 1er evaluation json ensuite slacher le ' via js pour 2ieme eval json  [N'est pas un objet javaScript}
    }
    catch(e){
     
    alert(e.message+"=>jsQ")
    }
    C'est simplement le résultat d'une requete Ajax
    au debut j'ai eu une erreur invalid label vu que javaScript s'attend à un objet javaScript et non pas à un objet au format Json donc l'ajout de "("+ en convertissant le résultat en string a resolu le probleme
    et là donc j'ai une erreur unterminated string literal
    mon contenu est le resultat d'une requete SQL dans une base de donnée ou il doit y avoir des retours à la ligne indésirables
    Existe il une fonction PHP pour résoudre ce souci ou un formatage quelconque en javaScript merci

  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
    tu dois t'arranger coté serveur pour supprimer les caractères indésirables
    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é
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut
    Style les espaces indésirables avec trim() les retours lignes ? etc

  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
    y'a quoi là dedans aJ.responseText ?
    fais en un console log
    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 Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    vu que javaScript s'attend à un objet javaScript et non pas à un objet au format Json
    Quelle est ta définition d'objet JavaScript ?
    Quelle est ta définition d'un JSON ?

    Un objet JavaScript est une entité faisant partie intégrante de JavaScript.
    Un JSON est un format plat (chaîne) permettant d'échanger de l'information entre deux langages.

    Sens JavaScript vers serveur (PHP par ex) :

    Objet JavaScript :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var membre = {
      nom: 'Eich',
      prenom: 'Brendan'
    }
    Le JSON équivalent, qui est une chaîne donc un format plat, peut être passée au serveur :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    JSON.stringify(membre); // '{"nom":"Eich","prenom":"Brendan"}'

    Côté serveur (par exemple PHP), on récupère le format JSON, et on le traduit dans une entité compréhensible du langage (stdclass/array PHP en l'occurence) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var_dump(json_decode('{"nom":"Eich","prenom":"Brendan"}')); 
    /* Donne l'stdclass :
    object(stdClass)#1 (2) { 
      ["nom"]=> string(4) "Eich" 
      ["prenom"]=> string(7) "Brendan" 
    }*/
     
    var_dump(json_decode('{"nom":"Eich","prenom":"Brendan"}', true)); 
    /* Donne l'array :
    array(2) { 
      ["nom"]=> string(4) "Eich" 
      ["prenom"]=> string(7) "Brendan" 
    }*/

    Sens serveur (PHP par ex) vers JavaScript :

    Côté PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $membre = array("nom" => "Eich", "prenom" => "Brendan");
    var_dump(json_encode($membre)); // string(33) "{"nom":"Eich","prenom":"Brendan"}"

    On a bien une chaîne formatée correctement en JSON. Grâce à une méthode native de JavaScript, tu peux transformer le JSON en Objet JavaScript :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    JSON.parse('{"nom":"Eich","prenom":"Brendan"}'); // Object {nom: "Eich", prenom: "Brendan"}

    On est donc sûre que notre Objet JavaScript est correct. Donc, pourquoi utilises-tu eval ??

  6. #6
    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
    aJ.responseText => du string

    eval si JSON.parse n'est pas dispo ...
    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 !

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    or localStorage.setItem(clé,monObjet); va stocker une chaine de caractere "object"
    Oui, localstorage ne stocke que des chaines, mais rien ne t'empêche d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    localStorage.setItem(clé,JSON.stringify(monObjet));
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut
    Merci pour ces infos
    Je vais supprimer mes eval pour Json.parse() et je ne connaissais pas stringify(monObjet) qui va énormément alléger mon code
    merci beaucoup

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut
    Bon ça devient du PHP et vu que j'en ai pas fait depuis des lustres
    voici mon code pour supprimer les retours ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //$contenu=str_replace('CHR(13)','x',$row['CONTENU'],$count); //\n et ou \r CHR(10)CHR(13)
    ou \r\n
    j'ai tout essayé
    Par contre mon retour chariot existe bien nl2br le transforme bien en <br>
    En javaScript ça m'a l'air difficile merci pour votre aide

  10. #10
    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
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $chaine="une
    chaine
    avec
    ds
    retours
    ligne";
     
    $chaine=preg_replace('~\r|\n~',' ',$chaine);
     
    echo nl2br($chaine);
    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 !

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut
    Merci beaucoup pour ton code qui fonctionne parfaitement
    Il s'agit bien des caracteres ASCII 10 saut de ligne et 13 retour chariot
    A une époque je ne juré que par PHP et là je fais du Js inutilement c'est plus ludique
    donc j'avais fait un code comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(var j=0;j<aJ.responseText.length;j++){
     
    var code=aJ.responseText.charCodeAt(j);
     
    alert(code+":"+String.fromCharCode(code));//donne code 10 et 13  quand on a un vide ....
    }
     
    }
    Bien sur je vais utiliser ton code php Merci !

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

Discussions similaires

  1. unterminated string literal, mais je ne sais pas pourquoi
    Par job48 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/09/2010, 17h49
  2. (PHP) Erreur JS : unterminated string literal
    Par FotoXe33 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/03/2010, 15h16
  3. [DOM] "unterminated string literal"
    Par Crawdge dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/05/2008, 09h40
  4. "unterminated string literal" oui mais je ne vois rien
    Par lodan dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/02/2008, 17h52
  5. Unterminated string literal
    Par zalalus dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/12/2006, 15h32

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