Sur Internet d'aujourd'hui, AJAX n'est plus un mot inconnu. En parlant d'AJAX, on peut immédiatement penser au XML issu du RSS. L'analyse XML n'est probablement plus un problème, surtout avec PHP5 et l'émergence d'un grand nombre d'analyseurs XML, comme le plus léger SimpleXML. Cependant, pour AJAX, l’analyse XML est plus encline à prendre en charge Javascript frontal. Je pense que tous ceux qui ont analysé XML seront déroutés par les arbres et les nœuds. Il est indéniable que XML est une très bonne méthode de stockage de données, mais sa flexibilité le rend difficile à analyser. Bien entendu, la difficulté évoquée ici est relative au protagoniste de cet article – JSON.
Qu’est-ce que JSON ? Je ne répéterai pas le concept. En termes simples, il s'agit d'un format de stockage de données, tout comme une chaîne sérialisée PHP. Il s'agit d'une description de données. Par exemple, si nous sérialisons un tableau et le stockons, il peut être facilement désérialisé et appliqué. La même chose est vraie pour JSON, sauf qu'il crée un pont interactif entre Javascript côté client et PHP côté serveur. Nous utilisons PHP pour générer une chaîne JSON, puis transmettons cette chaîne au Javascript frontal, et Javascirpt peut facilement la convertir en JSON puis l'appliquer. Pour faire simple, cela ressemble vraiment à un tableau.
Plus près de chez nous, comment utiliser JSON. PHP5.2 prend en charge JSON. Bien sûr, s'il est inférieur à cette version, il existe de nombreuses implémentations de versions PHP sur le marché, utilisez simplement celle de votre choix. Nous parlons maintenant principalement du support JSON intégré de PHP. Très simple, deux fonctions : json_encode et json_decode (très similaire à la sérialisation). Un pour l'encodage et un pour le décodage. Voyons d'abord l'utilisation de l'encodage :
<?php
$arr = tableau(
'nom' => 'Chen Yixin',
'nick' => 'espace profond',
'contact' => tableau(
'email' => 'shenkong à qq dot com',
'site web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
echo $json_string;
?> Il est très simple de JSON un tableau. Il convient de souligner que dans l'encodage non UTF-8, les caractères chinois ne peuvent pas être codés et le résultat sera nul. Par conséquent, si vous utilisez gb2312 pour écrire du code PHP, vous devez utiliser iconv ou mb pour convertir le contenu contenant. Le chinois vers UTF-8 est alors json_encoded, et les résultats de sortie ci-dessus sont les suivants :
{"name":u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shenkong à qq dot com","website":"http: //www.devdao.com"}} Je vous ai déjà dit que c'était très similaire à la sérialisation, mais vous n'y croyez toujours pas. Après l'encodage, il faut décoder. PHP fournit la fonction json_decode correspondante. Après l'exécution de json_decode, un objet sera obtenu.
<?php
$arr = tableau(
'nom' => 'Chen Yixin',
'nick' => 'espace profond',
'contact' => tableau(
'email' => 'shenkong à qq dot com',
'site web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?> Est-il possible d'accéder aux propriétés au sein de l'objet ? $obj->name, comme ceci, bien sûr, vous pouvez également le convertir en tableau pour un appel facile :
$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (tableau) $obj;
print_r($arr); PHP n'est pas très utile pour se déplacer. En plus de la génération de cache, cela donne l'impression de stocker directement le tableau. Cependant, lorsque vous interagissez avec la réception, son rôle apparaît ci-dessous. utiliser Javascript pour utiliser ce caractère :
<script type="text/javasscript">
var arr = {"name":u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shenkong à qq dot com","website":" http://www.devdao.com"}} ;
alerte(nom.arr.)
</scrīpt> Dans ce qui précède, affectez directement cette chaîne à une variable, et elle deviendra un tableau Javascrīpt (le terme professionnel ne doit pas être appelé un tableau, mais en raison des habitudes de PHP, je l'appelle simplement un tableau pour plus de commodité. comprendre ). De cette façon, vous pouvez facilement parcourir arr ou faire ce que vous voulez. Je n'ai pas encore mentionné AJAX, n'est-ce pas ? Oui, réfléchissez-y, si le réponseText renvoyé par le serveur utilise une chaîne JSON au lieu de XML, ne serait-il pas très pratique pour le Javascript frontal de le traiter ? C'est ainsi qu'on utilise le plâtre pour peau de chien.
En fait, au moment où j'écris ceci, à l'exception des différents formats de stockage de données, il n'y a pas beaucoup de différence entre JSON et XML, mais je mentionnerai une chose ci-dessous. Bien que cela n'ait pas grand-chose à voir avec XML, cela peut illustrer l'application plus large de JSON, c'est-à-dire les appels de données inter-domaines. En raison de problèmes de sécurité, AJAX ne prend pas en charge les appels inter-domaines. Il est très difficile d'appeler des données sous différents noms de domaine. Bien qu'il existe des solutions (Stone a mentionné les proxys dans sa conférence, je ne le comprends pas mais je le sais). être résolu). J'ai écrit deux fichiers, qui suffisent pour démontrer les appels inter-domaines.
Fichier principal index.html
<scrīpt type="text/javascrīpt">
fonction getProfile(str) {
var arr = chaîne ;
document.getElementById('nick').innerHTML = arr.nick;
}
</script>
<body><div id="nick"></div></body>
<scrīpt type="text/javascrīpt" src=" http://www.openphp.cn/demo/profile.php"></scrīpt > Le fichier profile.php ajusté
<?php
$arr = tableau(
'nom' => 'Chen Yixin',
'nick' => 'espace profond',
'contact' => tableau(
'email' => 'shenkong à qq dot com',
'site web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)";
?> Évidemment, lorsque index.html appelle profile.php, une chaîne JSON est générée et transmise à getProfile en tant que paramètre, puis le surnom est inséré dans le div. De cette manière, une interaction de données inter-domaines est terminée. n'est-ce pas très simple ? Puisque JSON est si simple et facile à utiliser, qu’attendez-vous ?