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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 53
    Points
    53
    Par défaut unterminated string literal
    Bonjour,

    Je récupère des données d'une BD via ajax. J'affiche les données reçues par une boucle. Cette boucle créé un tableau, des cellules dans lesquelles se trouvent des images et du texte avec des liens (balise <a>) avec la méthode createElement.

    Le lien de la première ligne du tableau fonctionne. Par contre les liens des autres lignes refusent de fonctionner et m'indiquent le message du titre (visible dans firebug).

    La fonction qui affiche les données reçoit les infos ("val" dans le code) en paramètre de la fonction "ajax"

    Voici un bout de code :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    info_v = val.split("|");
    	// Affiche le résultat
    	var tbv = document.createElement("table");
    	var trv = document.createElement("tr");
    	var tdv = document.createElement("td");
    	var tdtxtv = document.createTextNode(decodeURIComponent(escape("Date séjour")));
    		tdv.appendChild(tdtxtv);
    		trv.appendChild(tdv);
     
    		tdv = document.createElement("td");
    		tdv.style.textAlign= 'center';
    		tdtxtv = document.createTextNode("Auteur");
     
    		tdv.appendChild(tdtxtv);
    		trv.appendChild(tdv);
    		tbv.appendChild(trv);
     
    	for (i=0;i<=info_v.length-2;i++)
    	{
    		infov = info_v[i].split("#");
    		id_recit = infov[0];
    		pseudov = infov[1];
    		id_ville = infov[2];
    		periodev = infov[3];
    		anneev = infov[4];
    		id_recit_ville = infov[5];
     
    		tr_style = pair_impair(i);
    		if (tr_style==0){tr_bkg = "#C3C3C3";} else {tr_bkg="#858483";}
     
    		// Création de la ligne de tableau
    		var trv = document.createElement("tr");
    		trv.style.backgroundColor=tr_bkg;
    		var tdv = document.createElement("td");
     
    		// créé le premier lien
    		var av = document.createElement("a");
    			av.setAttribute("href","#");
    		var atxtv = document.createTextNode(periodev+" "+anneev);
    			av.appendChild(atxtv);
    			av.setAttribute("onclick","window.open('voyage_info_item.php?t=ville&r="+id_recit+"&i="+id_ville+"&p="+pseudov+"','"+pseudov+"','directories=no,location=no,menubar=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,width=1050,height=700')");
     
     
    			tdv.appendChild(av);
    			trv.appendChild(tdv);
    Quelqu'un a une idée ?

    Christian.

  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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    On peut avoir un exemple du contenu de val ?

    c'est a mon avis juste un souci d'echappement
    il serait aussi intéressant de voir la fonction ajax ..

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Merci pour votre réponse. J'ai tout de suite pensé à un truc comme ça. Mais je n'ai rien vu qui abonde dans ce sens.

    Enfin d'autres yeux valent mieux que deux...

    Voici la fonction ajax appelante :
    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
    35
    36
    37
    38
     
    function info_item(table,valeur,pays,ville)
    {
    	// Récupére les informations pour les envoyer au serveur
    	ajx = new ajx_HTTP;
    	valeur = encodeURIComponent(valeur);
    	pays = encodeURIComponent(pays);
    	ville = encodeURIComponent(ville);
    	ligne_post = "table="+table+"&valeur="+valeur+"&pays="+pays+"&ville="+ville;
    	ajx.open("POST","voyage_resultat.php",true);
    	// On envoie les headers 
    	ajx.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
    	// On envoie notre variable  
    	ajx.send(ligne_post); 
    	// Affiche la liste de résultat
    	document.getElementById("resultat_item").style.display="block";
    	// Enregistre l'élément conteneur
    	cont = document.getElementById('contenu');
    	cont.innerHTML="";
    	document.getElementById('av').innerHTML="";
    	document.getElementById('avs').innerHTML="";
     
    	// Traitement réponse de ajx
    	ajx.onreadystatechange = function()
    	{
    		if (ajx.readyState ==4)
    		{
    			if (ajx.status == 200)
    			{
    				var reponse = ajx.responseText;
     
    				// Affiche les informations recueillies
    				affiche_item(reponse);
     
    			}
    		}
    	}
    }
    affiche_item() est le bout de code précédemment envoyé.

    Le retour ajax, contenu dans la variable 'reponse' est sous ce format :
    17#christgh#22#4#70#2011#Janvier#France#Paris#monument#4#3|
    12#christgh#22#2#64#2011#Janvier#France#Paris#monument#4#3|
    14#christgh#23#2#66#2011#Juin#France#Paris#monument#4#3|
    13#christgh#23#2#65#2011#Juin#France#Paris#monument#4#3|

    Encore merci pour votre temps passé dessus.
    Christian.

  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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    il me semble que pour appender dans une table sous IE il faille appender dasn le tbody

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tdv.getElementsByTagName('tbody')[0].appendChild(tdtxtv)
    Mais ce n'est sans doute pas l'origine de l'erreur ???
    il ne te precise pas la ligne dans la console firebug ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    J'ai trouvé une parade, seulement elle n'explique pas la raison pour laquelle cela se fait.

    En fait, les liens de la première itération de la boucle s'écrivent parfaitement bien et sont valides. Dès la deuxième ligne (2ème itération) un espace, plutôt un retour chariot se créé mystérieusement.

    Sur cette chaîne :
    17#christgh#22#4#70#2011#Janvier#France#Paris#monument#4#3|
    Le nombre '17' se trouve après le '&i='

    av.setAttribute("onclick","window.open('voyage_info_item.php?t=ville&r="+id_recit+"&i="+id_ville+"&p="+pseudov+"','"+pseudov+"','directories=no,location=no,menubar=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,width=1050,height=700')");
    Donc si on suit on retrouve un lien écrit comme cela (du moins interprété comme cela)

    av.setAttribute("onclick","window.open('voyage_info_item.php?t=ville&r="+id_recit+"&i=
    "+id_ville
    +"&="+pseudov+"','"+pseudov+"','directories=no,location=no,menubar=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,width=1050,height=700')");
    En plus firebug me montre les liens comme ils sont écris dans le code, sans le retour chariot ? Curieux.



    Ma solution actuelle est d'inverser les informations envoyées par le serveur.
    Mais pourquoi donc j'ai ce retour chariot ?
    Qui ne bouge pas après, je n'ai qu'un saut de ligne de 2 à x itérations...

  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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    tes href ne sont pas inhibés ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    av.setAttribute("onclick","window.open('voyage_info_item.php?t=ville&r="+id_recit+"&i="+id_ville+"&p="+pseudov+"; return false','"+pseudov+"','directories=no,location=no,menubar=no,status=no,toolbar=no,resizable=yes,scrollbars=yes,width=1050,height=700')");

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Disons que comme je ne comprends pas grand chose au fond du problème, je ne peux jurer de rien. En tous les cas dans le code, je n'inhibe pas les href.

    Actuellement, je fais des recherches sur des caractères d'échappement qui pourraient éventuellement poser le problème entre la première ligne de valeur et la seconde. Vu que mes lignes comprennent une séparations avec '|' et '#' sépare les valeurs ???

    Bon, comme je dois avancer, je ferai les modif comme dit précédemment, et reviendrai dessus à l'occasion.

    En tout les cas merci beaucoup, d'être resté sur le coup et d'avoir cherché à m'aider.

    Christian.

  8. #8
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    '#' est le caractère utiliser pour passer une ancre dans l'url .
    essaye d'utiliser un autre caractère ?

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