En la Internet actual, AJAX ya no es una palabra desconocida. Hablando de AJAX, inmediatamente puede venir a la mente XML que surgió gracias a RSS. El análisis XML probablemente ya no sea un problema, especialmente con PHP5 y la aparición de una gran cantidad de analizadores XML, como el más liviano SimpleXML. Sin embargo, para AJAX, el análisis XML se inclina más hacia el soporte de Javascript front-end. Creo que todos los que hayan analizado XML se sentirán confundidos por los árboles y los nodos. Es innegable que XML es un muy buen método de almacenamiento de datos, pero su flexibilidad dificulta su análisis. Por supuesto, la dificultad a la que nos referimos aquí es relativa al protagonista de este artículo: JSON.
¿Qué es JSON? No repetiré el concepto. En términos sencillos, es un formato de almacenamiento de datos, como una cadena serializada de PHP. Es una descripción de datos. Por ejemplo, si serializamos una matriz y la almacenamos, se puede deserializar y aplicar fácilmente. Lo mismo ocurre con JSON, excepto que construye un puente interactivo entre Javascript del lado del cliente y PHP del lado del servidor. Usamos PHP para generar una cadena JSON y luego pasamos esta cadena al Javascript frontal, y Javascipt puede convertirla fácilmente a JSON y luego aplicarla. En pocas palabras, realmente parece una matriz.
Más cerca de casa, cómo usar JSON. PHP5.2 tiene soporte integrado para JSON. Por supuesto, si es inferior a esta versión, hay muchas implementaciones de versiones de PHP en el mercado, simplemente use la que desee. Ahora hablamos principalmente del soporte integrado JSON de PHP. Muy simple, dos funciones: json_encode y json_decode (muy similar a la serialización). Uno para codificar y otro para decodificar. Primero veamos el uso de la codificación:
<?php
$arr = matriz(
'nombre' => 'Chen Yixin',
'nick' => 'espacio profundo',
'contacto' => matriz(
'correo electrónico' => 'shenkong en qq punto com',
'sitio web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
eco $json_string;
?> Es muy sencillo JSON una matriz. Cabe señalar que en codificación que no sea UTF-8, los caracteres chinos no se pueden codificar y el resultado será nulo. Por lo tanto, si usa gb2312 para escribir código PHP, debe usar iconv o mb para convertir el contenido que contiene. Luego, el chino a UTF-8 está codificado en json y los resultados de salida anteriores son los siguientes:
{"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shenkong en qq punto com","sitio web":"http: //www.devdao.com"}} Ya os he dicho que es muy parecido a la serialización, pero todavía no lo creéis. Después de codificar, es necesario decodificar. PHP proporciona la función correspondiente json_decode. Después de ejecutar json_decode, se obtendrá un objeto.
<?php
$arr = matriz(
'nombre' => 'Chen Yixin',
'nick' => 'espacio profundo',
'contacto' => matriz(
'correo electrónico' => 'shenkong en qq punto com',
'sitio web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?> ¿Es posible acceder a las propiedades dentro del objeto? $obj->name, así, por supuesto, también puedes convertirlo en una matriz para llamarlo fácilmente:
$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (matriz) $obj;
print_r($arr); PHP no es muy útil para moverse. Además de la generación de caché, se siente como si almacenara directamente la matriz. Sin embargo, cuando interactúa con la recepción, vea cómo. usar Javascript para usar este carácter:
<scrīpt tipo="text/javascrīpt">
var arr = {"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shenkong en qq punto com","sitio web":" http://www.devdao.com"}};
alerta(arr.nombre)
</scrīpt> En lo anterior, asigne directamente esta cadena a una variable y se convertirá en una matriz Javascrīpt (el término profesional no debería llamarse matriz, pero debido a los hábitos de PHP, solo lo llamo matriz por conveniencia. Entienda ). De esta manera, puedes atravesar arr fácilmente o hacer lo que quieras. No he mencionado AJAX todavía, ¿verdad? Sí, piénselo, si el texto de respuesta devuelto por el servidor usa una cadena JSON en lugar de XML, ¿no sería muy conveniente que el Javascript de front-end lo procese? Así se utiliza el yeso de piel de perro.
De hecho, mientras escribo esto, a excepción de los diferentes formatos de almacenamiento de datos, no hay mucha diferencia entre JSON y XML, pero mencionaré una cosa a continuación. Aunque tiene poco que ver con XML, puede ilustrar la aplicación más amplia de JSON, es decir, llamadas de datos entre dominios. Debido a problemas de seguridad, AJAX no admite llamadas entre dominios. Es muy problemático llamar datos con diferentes nombres de dominio. Aunque existen soluciones (Stone mencionó los proxy en su conferencia, no lo entiendo, pero lo sé). resolverse). Escribí dos archivos, que son suficientes para demostrar llamadas entre dominios.
Archivo principal index.html
<scrīpt type="text/javascrīpt">
función obtenerPerfil(cadena) {
var arr = cadena;
document.getElementById('nick').innerHTML = arr.nick;
}
</script>
<cuerpo><div id="nick"></div></body>
<scrīpt type="text/javascrīpt" src=" http://www.openphp.cn/demo/profile.php"></scrīpt > El archivo ajustado perfil.php
<?php
$arr = matriz(
'nombre' => 'Chen Yixin',
'nick' => 'espacio profundo',
'contacto' => matriz(
'correo electrónico' => 'shenkong en qq punto com',
'sitio web' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)";
?> Obviamente, cuando index.html llama a perfil.php, se genera una cadena JSON y se pasa a getProfile como parámetro, y luego el apodo se inserta en el div. De esta manera, se completa una interacción de datos entre dominios. ¿No es muy sencillo? Ya que JSON es tan simple y fácil de usar, ¿a qué estás esperando?