Na Internet de hoje, AJAX não é mais uma palavra desconhecida. Falando em AJAX, o XML que surgiu devido ao RSS pode vir imediatamente à mente. A análise de XML provavelmente não é mais um problema, especialmente com o PHP5 e o surgimento de um grande número de analisadores de XML, como o SimpleXML mais leve. No entanto, para AJAX, a análise XML está mais inclinada ao suporte de Javascript front-end. Acho que todos que analisaram XML ficarão confusos com árvores e nós. É inegável que o XML é um método de armazenamento de dados muito bom, mas sua flexibilidade dificulta a análise. Claro que a dificuldade aqui referida é relativa ao protagonista deste artigo - JSON.
O que é JSON? Não vou repetir o conceito. Em termos leigos, é um formato de armazenamento de dados, assim como uma string serializada em PHP. É uma descrição de dados. Por exemplo, se serializarmos um array e o armazenarmos, ele poderá ser facilmente desserializado e aplicado. O mesmo se aplica ao JSON, exceto que ele constrói uma ponte interativa entre o Javascript do lado do cliente e o PHP do lado do servidor. Usamos PHP para gerar uma string JSON e, em seguida, passamos essa string para o Javascript front-end, e o Javascirpt pode facilmente convertê-la em JSON e aplicá-la. Simplificando, realmente se parece com um array.
Mais perto de casa, como usar JSON. PHP5.2 possui suporte integrado para JSON. Claro que se for inferior a esta versão, existem muitas implementações de versões PHP no mercado, basta usar a que desejar. Agora falamos principalmente sobre o suporte interno JSON do PHP. Muito simples, duas funções: json_encode e json_decode (muito semelhante à serialização). Um para codificação e outro para decodificação. Vejamos primeiro o uso da codificação:
<?php
$arr = array(
'nome' => 'Chen Yixin',
'nick' => 'espaço profundo',
'contato' => array(
'e-mail' => 'shengong em qq ponto com',
'site' => 'http://www.devdao.com',
)
);
$json_string=json_encode($arr);
eco $json_string;
?> É muito simples JSON um array. Deve-se ressaltar que na codificação não UTF-8, os caracteres chineses não podem ser codificados e o resultado será nulo. Portanto, se você usar gb2312 para escrever código PHP, será necessário usar iconv ou mb para converter o conteúdo que contém. Chinês para UTF-8 é então json_encoded e os resultados de saída acima são os seguintes:
{"nome":"u9648u6bc5u946b","nick":"u6df1u7a7a","contato":{"email":"shengong at qq dot com","website":"http: //www.devdao.com"}} Já falei que é muito parecido com serialização, mas você ainda não acredita. Após a codificação, é necessário decodificar. O PHP fornece a função json_decode correspondente. Após a execução do json_decode, um objeto será obtido.
<?php
$arr = array(
'nome' => 'Chen Yixin',
'nick' => 'espaço profundo',
'contato' => array(
'e-mail' => 'shengong em qq ponto com',
'site' => 'http://www.devdao.com',
)
);
$json_string=json_encode($arr);
$obj = json_decode($json_string);
imprimir_r($obj);
?> É possível acessar as propriedades dentro do objeto? $obj->name, assim, é claro, você também pode convertê-lo em um array para facilitar a chamada:
$json_string=json_encode($arr);
$obj = json_decode($json_string);
$arr = (matriz) $obj;
print_r($arr); PHP não é muito útil para movimentação. Além da geração de cache, parece que você armazena diretamente o array. para usar Javascript para usar este caractere:
<script type="text/javascript">
var arr = {"nome":"u9648u6bc5u946b","nick":"u6df1u7a7a","contato":{"email":"shengong at qq ponto com","website":" http://www.devdao.com"}};
alerta(arr.nome)
</scrīpt> Acima, atribua diretamente esta string a uma variável, e ela se tornará um array Javascript (o termo profissional não deve ser chamado de array, mas devido aos hábitos do PHP, eu apenas o chamo de array por conveniência. entenda ). Dessa forma, você pode facilmente percorrer arr ou fazer o que quiser. Ainda não mencionei AJAX, certo? Sim, pense bem, se o responseText retornado pelo servidor usasse uma string JSON em vez de XML, não seria muito conveniente para o Javascript front-end processá-lo? É assim que o gesso para pele de cachorro é usado.
Na verdade, enquanto escrevo isto, exceto pelos diferentes formatos de armazenamento de dados, não há muita diferença entre JSON e XML, mas mencionarei uma coisa a seguir. Embora tenha pouco a ver com XML, pode ilustrar a aplicação mais ampla do JSON, ou seja, chamadas de dados entre domínios. Devido a questões de segurança, AJAX não suporta chamadas entre domínios. É muito problemático chamar dados sob diferentes nomes de domínio. Embora existam soluções (Stone mencionou proxies em sua palestra, não entendo, mas sei disso). ser resolvido). Escrevi dois arquivos, que são suficientes para demonstrar chamadas entre domínios.
Arquivo principal index.html
<scrīpt type="text/javascrīpt">
function getPerfil(str) {
var arr = str;
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 > O arquivo ajustado profile.php
<?php
$arr = array(
'nome' => 'Chen Yixin',
'nick' => 'espaço profundo',
'contato' => array(
'e-mail' => 'shengong em qq ponto com',
'site' => 'http://www.devdao.com',
)
);
$json_string=json_encode($arr);
echo "getProfile($json_string)";
?> Obviamente, quando index.html chama profile.php, uma string JSON é gerada e passada para getProfile como parâmetro e, em seguida, o apelido é inserido no div. Dessa forma, uma interação de dados entre domínios é concluída. não é muito simples? Já que JSON é tão simples e fácil de usar, o que você está esperando?