Использование JavaScript для доступа к массиву JSON из PHP - PullRequest
2 голосов
/ 15 января 2011

Я пытаюсь понять, как мой PHP-скрипт может передавать массив в мой JavaScript-код. Используя следующий PHP, я передаю массив:

$c = array(3,2,7);

echo json_encode($c);

Мой JavaScript выглядит следующим образом:

    $.post("getLatLong.php", { latitude: 500000},
        function(data) {
            arrayData = data
            document.write(arrayData)
            document.write(arrayData[0]);
            document.write(arrayData[0]);
            document.write(arrayData[0]);
        });
</script>

На экране напечатано

[3,2,7][3,

Я пытаюсь понять, как работает json_encode - я думал, что смогу передать массив в переменную, а затем получить к нему доступ, как обычный массив JavaScript, но он рассматривает мой массив как одну большую текстовую строку. Как убедиться, что он читает его как массив?

1 Ответ

4 голосов
/ 15 января 2011

Передайте аргумент dataType в $.post:

$.post("getLatLong.php", { latitude: 500000},
   function(data){         
   // ...
}, 'json');

Тогда data будет правильно декодирован.

В качестве альтернативы вы также можете использовать $.parseJSON в обратном вызове.

Объяснение JSON:

JSON - формат обмена данными. Он определяет структуру передаваемой строки данных . json_encode принимает структуру данных PHP как массив или объект и преобразует ее в JSON, то есть строку с определенным форматом.

json_encode($c) даст вам строку "[3,2,7]".

На клиентском сайте вы получаете эту строку, но вам нужно декодировать в соответствующие структуры данных JavaScript. Поэтому $.parseJSON(data) даст вам массив JavaScript с 3 элементами (или если вы передадите 'json' в качестве третьего параметра .post(), jQuery выполнит декодирование автоматически для вас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...