У меня проблема с доступом к данным JSON. Я новичок в JSON и jquery, поэтому, возможно, это простое решение, и я был бы рад узнать.
Мой jQuery:
$.post( "currentPage.php", { 'currentPage': 1 }, function(data){ $("body").append(data); } );
currentPage.php:
$returnArray['left'] = 'test_left'; $returnArray['right'] = 'test_right'; $returnArray['numLeft'][] = 1; $returnArray['numRight'][] = 2; $returnArray['numRight'][] = 3; print json_encode($returnArray);
Я попытался получить доступ к следующим данным:
data.left data['left']
но он возвращает пустое, как лучший способ доступа к данным в HTML-файле?
Я мог ошибаться, но я не думаю, что метод post
предполагает возврат данных типа json. Вы можете установить это, изменив функцию ajax на:
$.post( "currentPage.php", { 'currentPage': 1 }, function(data){ $("body").append(data); }, "json" );
Укажите тип данных, который вы ожидаете получить как параметр метода .post()
(в вашем случае json
):
$.post("currentPage.php",{'currentPage': 1}, function(data){ $("body").append(data); }, 'json' // <-- add the expected datatype );
Я считаю, что значение по умолчанию заключается в обработке результата как HTML. Прочтите документацию .
jQuery.post (url, [data], [success (data, textStatus, XMLHttpRequest)], [dataType])
строка urlA, содержащая URL-адрес, по которому отправляется запрос.
dataA map или строка, которая отправляется на сервер с запросом.
success (data, textStatus, XMLHttpRequest) Функция обратного вызова, которая выполняется, если запрос завершается успешно.
dataType Тип данных, ожидаемых от сервера.
В JQuery вам нужно установить тип данных возврата ( dataType
) в json
чтобы функция знала, какой тип данных ожидать и обрабатывать. Из руководства:
«json»: оценивает ответ как JSON и возвращает объект JavaScript. В jQuery 1.4 данные JSON обрабатываются строгим образом; любой отклоненный JSON отклоняется и возникает ошибка синтаксического анализа. (См. Json.org для получения дополнительной информации о правильном форматировании JSON.)
Вы можете сделать это с помощью полного вызова $ .ajax () , или вы можете использовать $ .getJSON () . Не существует HTTP POST-ярлыка для возврата JSON (то есть $ .postJSON не существует), но вы можете dataType
параметр dataType
в $.ajax()
или просто добавить параметр в $.post()
. Когда у вас есть объект JSON
, используйте json.keyName
для доступа к данным.
$.ajax({ url: "currentPage.php", data: { 'currentPage': 1 }, dataType: "json", type: "post", success: function(data) { $("body").append(data); } });