jongler avec des donnée entre javascript et php

Eléphant du PHP | 132 Messages

24 oct. 2007, 09:13

Bonjour;

Petite problèmatique du matin !
je me demandais ou poster ce topic (javascript ? php ?) verra bien ..

Voila, comme d'habitude, je vais essayer de me faire comprendre car mes questions sont toujours un peu tordu ! Je manipule assez souvent des donnée par ajax, donc javascript + php.

Je donne un exemple tout de suite :

1 - formulaire adresse ? => "rue de l'ise"
2 - validation ajax => "rue%20de%20l’ise"

Bon, j'ai fait au plus, simple. Remplir un champ de formulaire et envoyé le résultat par post/get.

Je connais plusieurs moyen de traiter une chaine :
- urlencode / urldecode
- escape / unescape
- htmlentities / ..

Mais la question que je vous pose c'est :
Connaissez vous un moyen de traiter une chaine en javascript qui soit équivalente en php ??
Je veux donc dire qui encode et décode de la meme manière !

Je pourrais ainsi encoder en javascript et decoder en php.

PS : j'ai plutot tenter de vous expliquer ce dont sur quoi je buttai plutot que dans quel cas, car cela serait plus complex a expliquer.

Merci d'avance pour vos explications et réponses futurs

Eléphant du PHP | 443 Messages

24 oct. 2007, 09:20

Connaissez vous un moyen de traiter une chaine en javascript qui soit équivalente en php ??
Je veux donc dire qui encode et décode de la meme manière !

Je pourrais ainsi encoder en javascript et decoder en php.
Salut,

Regarde des tutos JSON, tu pourras échanger n'importe quoi entre php et javascript (dans les deux sens). JSON est un format d'encodage "texte" (~équivalent à XML mais plus adapté au js), l'échange se gère par deux librairies (codec), une côté php l'autre côté js. C'est assez simple à mettre en oeuvre et plutot pertinent car tu peux échanger des structures complexes.


Tracker.

Eléphant du PHP | 132 Messages

24 oct. 2007, 10:02

Merci de ta réponse !

cela requiert des librairies ??
Car si je peux me passer de dépendances, c'et vraiment un plus.

Je vais tout de meme regarder cela.

Eléphant du PHP | 443 Messages

24 oct. 2007, 10:09

Merci de ta réponse !

cela requiert des librairies ??
Car si je peux me passer de dépendances, c'et vraiment un plus.

Je vais tout de meme regarder cela.
Que tu développes une classe ou que tu en livres une déjà implémentée (libre et debugguée), je vois pas la différence. Fais des recherches, il en existe plusieurs. Côte php tu trouveras JSON_Service, et en js mootools par exemple.

Je lance la perche, il serait interessant de connaitre ce que les utilisateurs du forum utilisent, et ce qu'ils en pensent.


Tracker.

ViPHP
ViPHP | 4039 Messages

24 oct. 2007, 11:11

jquery à aussi une fonction dédié à json ($.getJSON), très utile. Et une fois dans le script, ça se lit comme un tableau.

ça et le json_encode de php5, plus de soucis.

(j'avais prévu un transfert en xoxo, mais à la fin du json était quand même vachement plus simple).
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 132 Messages

25 oct. 2007, 10:37

Bien;

J'ai commencer à m'intérésser a JSON qui en fait est intégré a php 5.2.0 par défaut.
J'avoue que j'ai un peu de mal ou alors j'ai pas la bonne logique.

Donc en php il y a ces deux fonctions :
• json_decode — Décode une chaîne JSON
• json_encode — Retourne le représentation JSON d'une valeur

Et en javascript, on retrouve :
.toJSONString()
.parseJSON()

Enfin, je pense que y'en a d'autres mais j'ai déjà sa.
Ensuite, dans tout les tutos ou exemple que j'ai vu, il
n'y a que des variables tableaux.
>> Impossible de traiter une simple donnée ??

Donc si une ame charitable pouvais m'expliquer un peu le fonctionnement pour passer
par exemple la chaine "mémé" de php vers Javascript et l'inverse.

Encore merci !

UP :

J'ai fait divers test d'affichages qui me donne ceci . .
>> Test JSON - Affichage PHP :

DECLARATION VARIABLES :
$a = 1
$b = '1'
$c = "1"

AFFICHAGE JSON_ENCODE :
$a = 1
$b = "1"
$c = "1"

AFFICHAGE JSON_DECODE :
$a = 1
$b = 1
$c = 1

>> Test JSON - Affichage JAVASCRIPT :

AFFICHAGE JSON_DECODE DEPUIS PHP :
a = 1
b = '1'
c = "1"

AFFICHAGE JSON_ENCODE DEPUIS PHP :
a = 1
b = '1'
c = "1"

Code : Tout sélectionner

<? $a = 1; $b = '1'; $c = "1"; print (">> Test JSON - Affichage PHP : <br /><br />"); print ("DECLARATION VARIABLES : <br />"); print ('$a = '.$a."<br />"); print ('$b = \''.$b."'<br />"); print ('$c = "'.$c."\"<br /><br />"); print ("AFFICHAGE JSON_ENCODE : <br />"); print ('$a = '.json_encode($a)."<br />"); print ('$b = '.json_encode($b)."<br />"); print ('$c = '.json_encode($c)."<br /><br />"); print ("AFFICHAGE JSON_DECODE : <br />"); print ('$a = '.json_decode($a)."<br />"); print ('$b = '.json_decode($b)."<br />"); print ('$c = '.json_decode($c)."<br /><br />"); print (">> Test JSON - Affichage JAVASCRIPT : <br /><br />"); ?> <script> document.write ('AFFICHAGE JSON_DECODE DEPUIS PHP : <br />'); document.write ('a = ' + <?=json_decode($a)?> + "<br />"); document.write ('b = \'' + <?=json_decode($b)?> + "'<br />"); document.write ('c = "' + <?=json_decode($c)?> + "\"<br /><br />"); document.write ('AFFICHAGE JSON_ENCODE DEPUIS PHP : <br />'); document.write ('a = ' + <?=json_encode($a)?> + "<br />"); document.write ('b = \'' + <?=json_encode($b)?> + "'<br />"); document.write ('c = "' + <?=json_encode($c)?> + "\"<br />"); </script>

Eléphant du PHP | 132 Messages

25 oct. 2007, 14:27

Bon, j'ai fait un essai de php vers javascript :

Code : Tout sélectionner

<script> <?php $toto = array('bingo','titi'=>'fée',5,63,'tutu'); ?> var json = '<?php echo json_encode($toto); ?>'; // Tu retransforme en objet en javascript dans tab var tab=eval('('+json+')'); alert(tab['titi']); // var faire un beau popup avec 'fée' </script>
j'obtient un message qui me dit : f
au lieu de : fée

Et je n'arrive meme pas a passer outre les accents ...

Eléphant du PHP | 443 Messages

25 oct. 2007, 15:07

Re,

La doc de json_encode(...) est explicite:
Cette fonction ne fonctionne qu'avec des données encodées UTF-8.
Je pense du coup, que ton source en mal encodé (vérifie la configuration de ton éditeur).
Ensuite ajoute la ligne suivante de manière à indiquer au navigateur que l'encodage du contenu qu'il s'apprête à traiter est de l'utf8.
header('content-type: text/html; charset=utf-8');

Tracker.