Если я правильно прочитал ваш вопрос, вы на самом деле не ищете подсказки по этому конкретному коду, а больше по поводу комментариев о процессе передачи данных между PHP и jQuery и обратно. Давайте кратко рассмотрим сам JSON, а затем рассмотрим каждую сторону сообщения.
JSON
JSON - это простой способ представления коллекций данных в строковом формате, который довольно легко читается как людьми, так и компьютерами. Вы можете получить полное описание на http://www.json.org/, но в основном сводится к:
- данные заключены в
{
и }
символы
- данные имеют формат
string : value
, где string
выступает в качестве эталонной метки
string
в формате "
, за которым следует любой символ Юникода, кроме /
или "
, за которым следует еще одна кавычка
value
может быть другой строкой, числом, полным объектом данных, логическим значением или массивом некоторого набора вышеуказанных значений
- массив имеет формат
[
, за которым следует разделенный запятыми список значений, за которым следует ]
PHP
На стороне php вы получаете запрос страницы и используете вложенные параметры, чтобы решить, как обрабатывать страницу. Для приложения JSON это означает загрузку данных в массив, а затем функция json_encode()
выполняет основную работу по преобразованию этого массива в формат JSON. Остальная часть приложения будет работать точно так же, если вы вручную создадите JSON в виде строки, хотя, очевидно, это сделает для вас гораздо больше работы в коде PHP. Отсюда и вспомогательная функция:)
JQuery
На стороне jQuery вызов $.post()
отправляет запрос AJAX, чтобы получить страницу с сервера. В этом случае вы отправляете запрос на php.php
.
Второй набор параметров в вызове $.post()
представляет собой набор параметров, который должен состоять из {
, за которым следуют разделенные запятыми наборы: метка, затем двоеточие, затем значение. После того, как вы указали все параметры, закройте коллекцию с помощью }
. Обратите внимание, что хотя это похоже на строку JSON, это не JSON. У метки нет кавычек, как того требует JSON. Однако любые строковые значения требуют кавычек.
Третий параметр вызова $.post()
- это функция, которая будет автоматически применяться к данным, полученным из запроса страницы. Результаты функции автоматически загружаются в любую переменную, указанную вами в определении функции, и вы можете использовать эти данные внутри функции практически в любой момент. В вашем примере вы просто отправили данные в окно оповещения, но вы можете сделать с ним гораздо больше. Вы могли бы фактически проанализировать это как коллекцию JSON и выполнить различные действия на основе содержимого отдельных компонентов внутри JSON (что, в конечном счете, означает, что вы непосредственно воздействуете на отдельные значения из исходного массива php).
Четвертый параметр в вызове $.post()
- это тип данных. Это не обязательно, однако его использование необходимо, если вы хотите получить доступ к коллекции json не только как к строке. С его помощью вы можете указать, что тип возвращаемых вами данных - json, просто включив "json"
. Если вы сделали это, вы можете получить доступ к элементам коллекции JSON непосредственно в функции третьего параметра, ссылаясь на их метку.
Вот пример полного вызова JSON $.post()
:
$.post("test.php", { "func": "getNameAndTime" },
function(data){
alert(data.name); //pretend it's John
console.log(data.time); //pretend it's 10:05am
}, "json");
Таким образом, здесь в ajax отправляется запрос ajax с параметром func="getNameAndTime"
, который php использует для определения того, что он должен вернуть json-закодированную коллекцию вида {"name":"John", "time":"10:05am"}
, и затем ответ достигает функции сначала указывается в alert () со значением «John», а затем в журнале «10:05 am». Опять же, единственная причина, по которой data.name
и data.time
работают в этой функции, заключается в том, что мы указали, что json был типом возврата в четвертом параметре.