|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 4 ![]() |
J'ai fait un formulaire flash contenant quelques cftextarea et je voudrais que dès que l'utilisateur change de cftextarea ma base de donnée soit automatiquement mise à jour sans que l'utilisateur ai donc a valider quoi que ce soit. J'ai pour cela rajouté du code actionscript dans les onBlur de mes cftextarea malheureusement j'ai ce souci :
Si j'ordone le submit() des qu'un de mes cftextarea est modifié je suis donc obligé d'ouvrir le résultat dans une autre fenêtre ou frame or je veux que la mise à jour de la bdd soit transparente (dommage car dans ce cas la mise à jour de la base se fait corectement sans perte des caractères spéciaux). L'autre solution était d'utiliser sendAndLoad() ou loadVariables(), j'ai reussi a utiliser ces deux fonctions avec succès et la bdd se met a jour automatiquement sans besoin de validation malheureusement tout mes accents et retour a la ligne sont perdus. Comment puis-je faire pour ne pas perdre tout les caractères spéciaux ? Merci à vous. Yoann |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 4 ![]() |
Je me répond à moi même puisque j'ai trouvé une solution et cela pourra peut-être servir à d'autres :
Je suis donc passé par loadVariables() et je passe donc mes données en argument dans l'URL (par ex 'modif.cfm?value=coucou'), par contre pour ne pas perdre les caractères spéciaux j'ai programmé une fonction qui converti ma chaîne de caractères en utf-8 sous la forme hexa, par example le symbole euro est %E2%82%AC. Voici la formule, je suis parti d'une fonction bidon qui encodait un peu betement et je l'ai optimisé avec un while : var string = 'texte à 1€ avec pleins de caractères bizares !'; var utftext = ''; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); var t = '0123456789ABCDEF'; var utfpart = ''; if(c < 128) { utfpart = '%' + t.charAt(Math.floor(c / 16)) + t.charAt(c - (Math.floor(c / 16)) * 16); } else { var valeurComp = 64; var valeurDecalA = 0; var valeurDecalB = 6; var valeurOR = 192; do { valeurComp *= 32; var d = 128 | c >> valeurDecalA & 63; utfpart = '%' + t.charAt(Math.floor(d / 16)) + t.charAt(d - (Math.floor(d / 16)) * 16) + utfpart; if(c < valeurComp) { d = valeurOR | c >> valeurDecalB; utfpart = '%' + t.charAt(Math.floor(d / 16)) + t.charAt(d - (Math.floor(d / 16)) * 16) + utfpart; } valeurDecalA += 6; valeurDecalB += 6; valeurOR = valeurOR >> 1 | 128; } while(c >= valeurComp); } utftext += utfpart; } loadVariables('UpdateBDD.cfm?textSaisie=' + utftext, this, 'POST'); Par contre je viens de me rendre compte en ecrivant ce message que du coup la longueur du texte de l'URL est limité à 256 caractères et que je ne pourrait donc pas transmettre des données trop longue... Je laisse quand même la fonction qui pourra peut être servir à d'autres... A+ Yoann Levet |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com