|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Bonjour,
Je travaille en .net c# et je tente de passer une chaîne de caractère à une fonction javascript depuis mon code behind. Je n'ai aucun souci sur des chaines simples, mais dès que cela devient complexe, je plante sur des caractères spéciaux. J'ai bien remplacé les " par \" mais ca ne semble pas suffire, il y en a d'autres qui empechent le bon fonctionnement. Exemple d'une chaine: (qui affiche un petit texte avec une couleur et une police... pas bien compliqué normalement) Code :
y a t'il une méthode toute faite pour faire cela ? MErci d'avance, |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
Bonjour,
le plus simple me semble t-il est de mettre ta chaine entre ' exemple dans ce cas les doubles quote, ", ne pose pas de problème exemple Code :
var chaine = 'la chaine "incluse" avec des doubles quote'; exemple Code :
var chaine = 'la chaine c\'est rompue'; |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Effectivement tes conseils marchent très bien dans la fonction javascript.
Mais mon souci est que je l'appelle depuis le code behind.. Et la cela ne change rien... Je génère en fait dynamiquement un évènement sur un GridView. e.Row.Attributes.Add("onmouseover", "FctJavaScript('" + chaine + "')"); Je seche un peu sur la syntaxe de la chaine... Une idée ? |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
dans ce cas il faur également échapper les " avec un \
ta chaine devient Code :
'<p><span style=\"font-size: medium; color: #000000; background-color: #ff6600;\"><span style=\"font-size: xx-large;\">coucou</span>, c\'est juste <strong>un test</strong></span></p> <p><span style=\"background-color: #ffff00;\">voilou</span></p> <p> </p> <p><span style=\"background-color: #ffff00;\"><span style=\"font-family: arial black,avant garde; font-size: small;\><em><span style=\"text-decoration: underline;\"><span style=\"background-color: #339966;\">c\'est modifié ^^</span></span></em></span><br /></span></p>'
|
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Oulah je dois m'y prendre comme un pied
![]() Bon voici le code C#. Code :
- missing ) after argument list soit d'autres messages sur des caracteres manquants... |
||
|
|
00
|
|
|
#6 | ||
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
en C# je ne sais pas mais en javascript
Code :
|
||
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Elle fait quoi ta deuxieme ligne ?
Je veux dire, elle remplace quoi par quoi ? |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
(/"/g, '\\"');
/"/g est l'expression régulière /"/ c'est le caractère à remplacer , ici " mis entre slash g est la façon de traiter la recherche, g = global (/"/g, '\\"'); \\" est la valeur de remplacement en résumé on remplace " par \" dans toute la chaine EDIT je ne suis pas un spécialiste en RegExp et ne suis donc pas sûr que cela soit clair. |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
ok merci à toi. vais voir tout ca.
|
|
|
00
|
|
|
#10 | ||||
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
Salut,
c'est moi ou tu mets 2 fois les ' ' : Code :
Code :
|
||||
|
|
00
|
|
|
#11 | ||||||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Citation:
J'ai toujours les mêmes messages, soit "unterminated string literal", soit "missing ) after argument list". si je prends ma chaine en dur directement dans la fonction javascript de la manière suivante, je n'ai aucun souci. (J'ai bien ajouter les simples quotes au début et à la fin + échapper les simples quotes dans la chaine). Code :
Il y a des caractères qui bloquent, mais lesquels ??? Voici le résultat dans Firebug.. Citation:
|
||||||||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Essaye de localiser les passages de ta chaîne qui posent problème et de régler un problème à la fois (en faisait une sous chaîne ne contenant que la partie posant problème), ce sera beaucoup plus simple.
|
|
|
00
|
|
|
#13 | |||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
Oui, en effet, tu as raison.
bon c'est bien les simples quotes qui posent pb dans le code behind... Si je passe ca, aucun souci... Code :
Code :
Citation:
|
|||||
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
en javascript oui, mais si ça passe d'abord par un langage serveur il faut aussi l'échapper pour ce langage.
Dit autrement : il faut que dans ton javascript ta chaîne contienne le caractère d'échappement. Donc côté serveur il faut que tu génères une chaîne affichant un caractère d'échappement. ex : Code :
Une méthode bourrin pour savoir combien d'échappement est nécessaire est de doubler le nombre de "\" tant que ça passe pas : "\", "\\", "\\\\", "\\\\\\\\", ... Inutile de t'embetter avec les valeurs intermédiaires (genre 6 "\") car elles n'ont aucun sens si on comprend la logique de l'échappement. PS : en javascript tu ne peux pas déclarer de variable de type "string", c'est forcément un "var". |
||
|
|
00
|
|
|
#15 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
mouarf, échapper l'échappement... c'est des malades
![]() Ok bon je dois être maudit ... Je coups ma chaine en 3 parties. Je l'assigne en dur dans un string dans le code behind. Je fais donc un : Code :
Je rajoute des bouts au fur et à mesure jusqu'à passer la chaine complete, aucun souci... J'utilise alors ma variable qui vient de SQL directement (c'est une colonne de table en fait) donc ... Code :
rhaaa je crois que je le tiens... En fait il me rajoute des \r\n dans ma chaine lorsque elle vient de SQL ce c... |
||||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Ca ne sert à rien de faire le replace côté client (en javascript donc). Si ta chaîne est mal formée en javascript tu ne peux plus rien faire dessus...
|
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
|
|
|
00
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 75 ![]() |
ouaip ok c'est bon...
Bon venant de SQL il faut bien faire un ... Code :
test = test.Replace("'", "\\'").Replace("\r\n", " "); ouf... merci à vous ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com