Я пытаюсь понять, как мой 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, но он рассматривает мой массив как одну большую текстовую строку. Как убедиться, что он читает его как массив?
Передайте аргумент dataType
в $.post
:
$.post("getLatLong.php", { latitude: 500000}, function(data){ // ... }, 'json');
Затем data
будут правильно декодированы.
В качестве альтернативы вы также можете использовать $.parseJSON
в $.parseJSON
.
Объяснение JSON:
JSON – это формат обмена данными. Он определяет структуру передаваемой строки данных . json_encode
принимает структуру данных PHP, такую как массив или объект, и преобразует ее в JSON, то есть строку с определенным форматом.
json_encode($c)
даст вам строку "[3,2,7]"
.
На клиентском сайте вы получаете эту строку, но вы должны ее декодировать в соответствующие структуры данных JavaScript. Таким образом, $.parseJSON(data)
предоставит вам массив JavaScript с 3 элементами (или если вы передадите «json» в качестве третьего параметра в .post()
, jQuery автоматически выполняет декодирование).