В современном Интернете AJAX больше не является незнакомым словом. Говоря об AJAX, на ум сразу приходит XML, возникший благодаря RSS. Анализ XML, вероятно, больше не является проблемой, особенно с появлением PHP5 и большого количества анализаторов XML, таких как самый легкий SimpleXML. Однако для AJAX синтаксический анализ XML более склонен к поддержке внешнего интерфейса Javascript. Я думаю, всех, кто разбирал XML, запутают деревья и узлы. Нельзя отрицать, что XML — очень хороший метод хранения данных, но его гибкость затрудняет его анализ. Конечно, упомянутая здесь трудность связана с главным героем этой статьи — JSON.
Что такое JSON? Я не буду повторять концепцию. С точки зрения непрофессионала, это формат хранения данных, аналогичный сериализованной строке PHP. Это описание данных. Например, если мы сериализуем массив и сохраняем его, его можно легко десериализовать и применить. То же самое верно и для JSON, за исключением того, что он создает интерактивный мост между клиентским Javascript и серверным PHP. Мы используем PHP для генерации строки JSON, а затем передаем эту строку во внешний интерфейс Javascript, и Javascirpt может легко преобразовать ее в JSON и затем применить. Проще говоря, это действительно похоже на массив.
Ближе к дому, как использовать JSON. PHP5.2 имеет встроенную поддержку JSON. Конечно, если она ниже этой версии, на рынке существует множество реализаций версии PHP, просто используйте ту, которую хотите. Сейчас мы в основном говорим о встроенной поддержке PHP JSON. Очень просто, две функции: json_encode и json_decode (очень похоже на сериализацию). Один для кодирования, другой для декодирования. Давайте сначала посмотрим на использование кодировки:
<?php
$арр = массив(
'name' => 'Чэнь Исинь',
'ник' => 'глубокий космос',
'контакт' => массив(
'электронная почта' => 'шенконг на qq dot com',
'веб-сайт' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
эхо $json_string;
?> Создать массив в формате JSON очень просто. Следует отметить, что в кодировке, отличной от UTF-8, китайские символы не могут быть закодированы, и результат будет нулевым. Поэтому, если вы используете gb2312 для написания кода PHP, вам необходимо использовать iconv или mb для преобразования содержащего его содержимого. Затем китайский язык преобразуется в UTF-8 в формате json_encoded, и приведенные выше выходные результаты выглядят следующим образом:
{"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shunkong at qq dot com","website":"http: //www.devdao.com"}} Я уже говорил вам, что это очень похоже на сериализацию, но вы все равно не верите. После кодирования необходимо декодировать. PHP предоставляет соответствующую функцию json_decode. После выполнения json_decode будет получен следующий объект.
<?php
$арр = массив(
'name' => 'Чэнь Исинь',
'ник' => 'глубокий космос',
'контакт' => массив(
'электронная почта' => 'шенконг на qq dot com',
'веб-сайт' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r ($ объект);
?> Можно ли получить доступ к свойствам объекта? $obj->name, как это, конечно, вы также можете преобразовать его в массив для удобства вызова:
$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (массив) $obj;
print_r($arr); PHP не очень полезен для перемещения. Помимо создания кэша, он похоже на прямое хранение массива. Однако, когда вы взаимодействуете со стойкой регистрации, посмотрите, как это сделать. использовать Javascript для использования этого символа:
<script type="text/javascript">
var arr = {"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shen Kong at qq dot com","website":" http://www.devdao.com"}};
предупреждение(имя аранж.)
</scrīpt> В приведенном выше примере напрямую присвойте эту строку переменной, и она станет массивом Javasscript (профессиональный термин не следует называть массивом, но из-за привычек PHP я просто называю это массивом для удобства. Понимайте ). Таким образом, вы можете легко перемещаться по Arr или делать все, что захотите. Я еще не упомянул AJAX, верно? Да, подумайте об этом: если в ответном тексте, возвращаемом сервером, используется строка JSON вместо XML, не будет ли очень удобно, чтобы интерфейсный Javascript обработал его? Вот как используют пластырь из кожи собаки.
На самом деле, пока я это пишу, за исключением разных форматов хранения данных, большой разницы между JSON и XML нет, но одну вещь я упомяну ниже. Хотя он имеет мало общего с XML, он может проиллюстрировать более широкое применение JSON, то есть междоменные вызовы данных. Из-за проблем с безопасностью AJAX не поддерживает междоменные вызовы. Очень затруднительно вызывать данные под разными доменными именами. Хотя есть решения (Стоун в своей лекции упоминал прокси, я в этом не разбираюсь, но знаю). быть решена). Я написал два файла, которых достаточно для демонстрации междоменных вызовов.
Основной файл index.html
<script type="text/javascript">
функция getProfile(str) {
вар обр = ул;
document.getElementById('ник').innerHTML = arr.nick;
}
</скрипт>
<body><div id="ник"></div></body>
<scrīpt type="text/javascrīpt" src=" http://www.openphp.cn/demo/profile.php"></scrīpt > Настроенный файл Profile.php
<?php
$арр = массив(
'name' => 'Чэнь Исинь',
'ник' => 'глубокий космос',
'контакт' => массив(
'электронная почта' => 'шенконг на qq dot com',
'веб-сайт' => 'http://www.devdao.com',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)";
?> Очевидно, что когда index.html вызывает Profile.php, генерируется строка JSON, которая передается в getProfile в качестве параметра, а затем псевдоним вставляется в элемент div. Таким образом, междоменное взаимодействие данных завершается. не правда ли, это очень просто? Поскольку JSON настолько прост и удобен в использовании, чего вы ждете?