11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'utilise javascript et ajax de manière très légère sur mon site internet et je rencontre quelques soucis avec les accents et caractères spéciaux. Si en PHP je parviendrais à résoudre le soucis, en javascript je n'y arrive pas. Peut-être aussi que je m'y prends mal.

Exemple, pour un script d'auto-completion, un peu à la Google pour son moteur de recherche.
- 1 : L'utilisateur entre le début mot ;
- 2 : Une liste à puce apparait avec les propositions ;
- 3 : Dans un attribut "data-infos" de chaque puce, il y a plusieurs informations : par exemple, une description qui permet de compléter un textarea lors de la sélection d'un mot (sa description est alors automatiquement ajoutée) ; ces informations sont contenues dans un tableau $array ;
- 4 : Ce qui est dans l'attribut "data-infos" est formatée en PHP par suit : <?php echo htmlentities(json_encode($array)); ?> afin de pouvoir les récupérer en javascript ;
- 5 : Javascript s'occupe de replacer toutes les bonnes infos dans les bons formulaires.

Je parviens en javascript à récupérer les informations et à les mettre dans les bons formulaires, tout est bon. Le seul soucis est que les caractères spéciaux sont transformés. Exemple, un apostrophe devient &#039;

Savez-vous comment résoudre ce problème ? A priori, il faudrait donc le résoudre directement en javascript.
Merci d'avance Smiley smile
Modifié par Gaylord.P (31 Mar 2012 - 20:51)
Salut et merci d'avoir répondu Smiley smile

Le soucis c'est que si je vire htmlentities, voici ce que ça fait en code source lors de l'appel de la page :


	<li><a href="#" data-product="{"id_product_catalog":"157","product_family":"Papeterie" (etc...)


Donc nous avons plein de guillemet " qui font foirer le code Smiley ohwell

Lorsque je fais un print_r sur un résultat, ça me retourne bien un tableau PHP et c'est pourquoi j'utilise jSon ; exemple :


Array
(
    [id_product_catalog] => 7
    [product_family] => Timbre poste
    [product_name] => Carnet
    [product_reference] => 
    [product_weight] => 
    [product_price] => 7.2
    [product_price_eco] => 
    [product_tax_1] => 0
    [product_tax_2] => 0
    [product_tax_3] => 0
    [product_tax_4] => 0
)


Merci d'avance Smiley smile
Heu le json t'es pas censé le coller directement dans le code HTML comme ça, faut le traiter avant. Enfin, normalement quand tu le récupères, si tu as bien défini ton type de données sur Json, tu récupères un tableau JavaScript, t'as plus qu'à boucler dessus pour générer ton contenu.
Modifié par jb_gfx (31 Mar 2012 - 17:52)
En fait il n'est pas traité directement à la main.
PHP me renvoi un tableau avec toutes les données (celle que j'ai cité juste avant dans le Array() ) et ensuite je fais ceci :

data-product="<?php echo json_encode($array); ?>" 


data-product est un attribut de chaque puce des suggestions d'autocompletion.

C'est incorrect ? Smiley confused
Oui c'est incorrect. Tu as vraiment besoin de toutes les données contenues dans le tableau ou juste une partie ?

Tu devrais plutôt faire :


<li><a href="#" data-id-product-catalog="157" data-product-family="Papeterie" (etc...)


Ou alors utiliser les fonctionnalités de local storage, mais ça risque de poser problème au niveau de la compatibilité avec les anciens navigateurs.
Modifié par jb_gfx (31 Mar 2012 - 18:07)
Aïe ... il n'y a donc aucune possibilité avec jSon ? Comment font les sites habituellement pour gérer ce genre de données dynamiques ? C'est dommage car c'est vraiment les accents qui posent problème. Smiley ohwell
Je connais pas ton script mais normalement le json tu le traites dans ton JS et pas en echo dans du HTML, c'est pas fait pour ça.
Re,

Je suis pour finir passé par plusieurs data-* comme tu me l'as proposé, et ça fonctionne parfaitement. Smiley smile

Je ne sais pas pourquoi à l'époque j'étais parti dans du jSon, de toutes évidences j'étais à côté de la plaque ^^

Merci beaucoup pour ton aide Smiley smile