Доступ к данным JSON из PHP - PullRequest
       22

Доступ к данным JSON из PHP

0 голосов
/ 12 апреля 2010

У меня проблема с доступом к данным 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-файле?

Ответы [ 3 ]

2 голосов
/ 12 апреля 2010

Я могу ошибаться, но я не думаю, что метод post предполагает тип возвращаемых данных json. Вы можете установить это, изменив функцию ajax на:

  $.post(
    "currentPage.php",
    { 
    'currentPage': 1
    },
    function(data){
      $("body").append(data);  
    },
    "json"
  );
1 голос
/ 12 апреля 2010

Укажите тип данных, который вы ожидаете получить в качестве параметра для метода .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 карта или строка, отправленная на сервер с запросом.

success (data, textStatus, XMLHttpRequest) Функция обратного вызова, которая выполняется в случае успешного выполнения запроса.

dataType Тип данных, ожидаемых от сервера.

1 голос
/ 12 апреля 2010

В JQuery вам нужно установить тип возвращаемых данных (dataType) на json, чтобы функция знала, какой тип данных ожидать и обрабатывать. Из руководства:

"json": оценивает ответ как JSON и возвращает объект JavaScript. В JQuery 1.4 данные JSON анализируются в строгая манера; любой искаженный JSON отклонено и выдается ошибка разбора. (См. Json.org для получения дополнительной информации о правильное форматирование JSON.)

Вы можете сделать это с помощью полного вызова $. Ajax () или использовать $. GetJSON () . Не существует ярлыка HTTP POST для возврата JSON (т.е. $ .postJSON не существует), но вы можете предоставить параметр dataType для $.ajax() или просто добавить параметр в $.post(). Если у вас есть объект JSON, используйте json.keyName для доступа к данным.

$.ajax({
    url: "currentPage.php",
    data: { 
        'currentPage': 1
    },
    dataType: "json",
    type: "post",
    success: function(data) {
        $("body").append(data);  
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...