#php #javascript #ajax #arrays
#php #javascript #ajax #массивы
Вопрос:
Я пытаюсь обработать массив, возвращающийся из ajax-вызова. Моя текущая ситуация заключается в том, что нажимается кнопка, и при нажатии она запускает ajax-вызов. Вот фрагмент PHP после вызова ajax..
function count_total() {
$count = get_count();
if ($count == 0) {
$count = 1;
}
$total = get_total();
$response = array('count' => $count, 'total' => $total);
echo $response;
exit;
}
Хорошо, теперь эта переменная $ response передается обратно на сторону JS, и если я оповещу переменную, очевидно, что она скажет «Массив». Итак, мой вопрос в том, как я могу работать с этим массивом? Я пытаюсь получить ключ / значение?
Или я не могу передать ему массив таким образом?
Есть идеи?
Ответ №1:
измените свое echo на это.
echo json_encode($response);
и затем вместо предупреждения об ответе, проанализируйте его с помощью библиотеки синтаксического анализа json, подобной этой.
Тогда у вас будет настоящий объект javascript, а не массив, потому что вы используете ассоциативный массив.
Ответ №2:
PHP не отправляет обратно сам массив, только слово ‘Array’. Он может отправлять обратно только обычный текст / HTML (или файлы, если вы путаетесь с заголовками).
Рассмотрите возможность использования JSON или эквивалентного метода, который возьмет массив и переведет его в текстовую форму для восстановления в JavaScript, или создайте свой собственный.
Например, вы могли бы повторить «count = 12; total = 254» из PHP и использовать функцию JavaScripts split(), чтобы разбить его обратно на части.