Как передать из php в javascript массив?
Каким образом можно передать php массив в javascript?
В коде на php имеем:
$kolz5 = mysql_query("SELECT * FROM numbers") or die ("error: ".mysql_errno()); $content = array(); while (($row=mysql_fetch_assoc($kolz5)) !== false)
в коде javascript принимаем:
Пробовал с помощью json_encode, но таким образом, т.к. в массиве есть текст, вместо него передается абракадабра типа u. и т.д.
- Вопрос задан более трёх лет назад
- 29169 просмотров
Комментировать
Решения вопроса 1
$content = array('абвгд', 'abcdefg', '12345'); echo json_encode($content);
JS (+jQuery):
alert($.parseJSON(data));
Если у вас почему-то отображается абракадабра, то проблема точно не в JSON’е, а в кодировке.
То есть должно быть соответствие кодировки поля в таблице и кодировки html-документа (например, UTF-8):
При этом в базе должно быть установлено:
Collation: utf8_general_ci
Ответ написан более трёх лет назад
Нравится 2 22 комментария
вынужден тебя разочаровать, вопреки распространенному суеверию, HTML теги на кодировку страниц на сайте не влияют
все верно, скорее всего в кодировке. у меня везде utf8, все корректно отображается.
limpopo1992 @limpopo1992 Автор вопроса
я проверил, везде выставлена правильная кодировка
alert($.parseJSON(data));
limpopo1992 @limpopo1992 Автор вопроса
Анатолий K: ок, а как с ним работать после parseJSON? Вот я получил и массив и не могли бы чирикнуть как с этим дальше обращаться? или ссылку кинуть на мануалы?
limpopo1992 @limpopo1992 Автор вопроса
Анатолий K: Т.е. подразумевалось, что массив распарсили и теперь его можно юзать. Как с ним работать?
FanatPHP: Описание в тэге meta может повлиять на парсинг, если в Content-Type с сервера нет указания кодировки и документ пришёл без BOM. Разнюхивание кодировки — весьма многоэтапный процесс.
Но вы правы, практиковать выдачу текстового документа без указания кодировки — глупость вселенская.
limpopo1992 @limpopo1992 Автор вопроса
Анатолий K: теперь ясно, ок, спасибо большое!)
Евгений Петров: ни один браузер не читает кодировку из меты.
FanatPHP: Надо ребятам из консорциума сказать, что они глупостью занимаются:)
limpopo1992 @limpopo1992 Автор вопроса
alert( user.friends[1] ); // 1
мы обращаемся к friends и выбираем его второй элемент, а если у меня
[< "thelocation" : "москва", "":"">,< "thelocation" : "london", "":"">], то как мне обратиться допустим ко второму thelocation?
Евгений Петров: не глупостью, когда открывается файл, то его кодировка да — берется из меты
FanatPHP: Поставьте в настройках сервера пустую кодировку, HTML-файл с кусками русского текста сохраните в UTF без BOM, а в meta поставьте charset=»windows-1251″.
Полюбуйтесь на кракозябры, потом замените на charset=»utf-8″ и наблюдайте чудесное исправление символов на нормальные.
FanatPHP: Когда открывается файл, ищется charset в Content-Type. Если там нет, загружается первые 500 байт (так вроде. ) и определяются первые несколько байт. Если эти байты не представляют собой BOM, то ищется meta и атрибут charset.
Файлы в UTF без удаления сигнатуры открываются нормально и без указания кодировки с сервера, и без всяких meta. Но если удалить сигнатуру, и кодировку с сервера не отдавать — вот тогда meta и нужен. И браузеры его читают.
Евгений Петров: когда открывается файл, никакого Content-Type нет
FanatPHP: А вот тут поясните — когда браузер получает HTTP-сообщение, то HTTP Headers нет? Как это возможно?
Евгений Петров: когда браузер запрашивает НТТР ресурс, тогда НТТР заголовки есть. Когда открывает файл — откуда они возьмутся?
FanatPHP: Браузер получил HTTP-сообщение с заголовками, в которых есть Content-Type с типом и кодировкой, и телом, в котором находится текст для предстоящего парсинга. И вот когда браузер начинает парсинг, то секция заголовков чудесным образом испаряется?)
А вообще, я только лишь поправил вас — meta читается при необходимости всеми браузерами. Надеюсь, по этому моменту прения закончены?)
FanatPHP: А вот Content-Type в meta внутри документа никто не читает, это да. Но не charset.
Евгений Петров: если это НТТР ответ с типом и кодировкой, то на мету не смотрит никто и никогда. По поводу чтения меты — я тестировал давно и на HTML4. При запросе НТТР ресурсов мета игнорировалась, при открытии файлов — использовалась
FanatPHP: Так я и написал выше, что при наличии charset в Content-Type от сервера или сигнатуры в самом документе никакая meta не нужна. Как проверить — также описал.
Я не понимаю, что вы имеете ввиду под термином «при запросе мета игнорировалась». Информация из меты берётся при нехватке информации о кодировке HTML-документа (Content-Type, BOM) только в процессе парсинга. Причём тут получение, не пойму.
limpopo1992: отвечаю на ваш вопрос: если у вас есть массив
var arr = [< "thelocation" : "москва", "":"">,< "thelocation" : "london", "":"">];
то ко второму thelocation можно обратиться так:
alert(arr[1].thelocation);
limpopo1992 @limpopo1992 Автор вопроса
Антон Дышкант: спасибо, я разобрался!)
Ответы на вопрос 3
Чебуратор тега РНР
абракадабра типа u. и т.д.
и что? чем она тебе мешает?
Ответ написан более трёх лет назад
Нравится 1 3 комментария
limpopo1992 @limpopo1992 Автор вопроса
забить и дальше javascript»ом работать в этими данными?
можешь так, а можешь хоть раз в жизни почитать документацию к json_encode. Без разницы
limpopo1992 @limpopo1992 Автор вопроса
FanatPHP: я знаю, что можно параметр дописать по кодировки, но у меня не такая свежая версия php
Функция PHP json_encode возвращает строку, содержащую JSON эквивалент стоимости переданного ей в качестве мы демонстрируем здесь с численно индексированный массив:
Или это попробуйте
The implode() function returns a string from the elements of an array.
The implode() function accept its parameters in either order. However, for consistency with explode(), you should use the documented order of arguments.
The separator parameter of implode() is optional. However, it is recommended to always use two parameters for backwards compatibility.
This function is binary-safe.
Как передать массив из php в javascript
@AlexChebotarsky Посмотрите в браузере исходный код полученной страницы.
1 июл 2017 в 19:40
Простите, за то давно задал вопрос и только сейчас отписываюсь. Зашёл в консоль (кстати не знал что консоль настолько удобный инструмент предупреждающий об ошибках в js, спасибо, теперь знаю), и увидел что в js вставился массив, естественно в формате json, но был без кавычек, добавил всё исправилось и побежал радостный дальше заканчивать модуль, и не поблагодарил своих спасителей, спасибо всем!
Финт: передача PHP массива в JavaScript
В этой заметке мы покажем способ передачи данных из PHP массива в JavaScript.
Если перед вами стоит такого рода задача, то лучше воспользоваться форматом JSON.
В переменной $php_variable может быть любой PHP массив.
Пример запись непосредственно в коде JavaScript:
drawChart(600/50, , . )
Удобство в том, что JSON-строку легко распарсить через JSON.parse(..):
var s = "JSON-строка"; var obj = JSON.parse(s);
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function
Перевел: Станислав Протасевич
Урок создан: 27 Июля 2016
Просмотров: 19119
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Как передать массив из php в js и получить значение?
Добрый день, столкнулась с проблемой что при передачи массива из php в js не получается потом получить элемент этого массива.
$key = array_keys($_POST); $nameTable = $key[0] . "_chat"; $query = $connect->query("SELECT message, sender, recipient FROM `$nameTable` ORDER BY id DESC LIMIT 30"); $arr = $query->fetchAll(); echo json_encode($arr);
$.ajax( < url: '/updateMessages', type: "POST", data: params['id'], success: function(result) < alert(result); >>);
Плучается такой результат
Хотела получить элемент с помощью alert(result[0]);
Но выдает только одну букву а не элемент
- Вопрос задан более трёх лет назад
- 2799 просмотров
Комментировать
Решения вопроса 3
Press CTRL+S to save project
Используйте сперва JSON.parse(result);
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Daria Motorina @glaphire Куратор тега PHP
PHP developer
Что именно возвращает alert(result[0])? Какое конкретное значение?
Сделайте JSON.parse, чтобы распарсить ответ и там искать реальный элемент или укажите в ajax dataType:»json», чтобы ajax знал, ответ какого формата ожидает от сервера
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Либо в JS делайте
JSON.parse();
Либо на PHP укажите заголовок
header('Content-Type: application/json; charset=utf-8');
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1
BATPYIIIKOB @BATPYIIIKOB
Всё верно. Вам возвращается первый элемент строки. Т.к. JSON это по сути строка как тип данных, а нулевой элемент в строке это есть первый символ. Для того, чтобы работать с JSON как с массивом — его необходимо преобразовать в массив (распарсить). О чём выше вам и написали :). Обмен между JS и PHP также реализуется с помощью преобразований в строку (JSON,XML,serialize string и т.д.). Не забывайте после передачи данных их распарсить. Единичные элементы (не массивы, не объекты и т.д..) можно передавать как есть, но может потребоваться преобразование типов.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- JavaScript
- +1 ещё
Выгрузка JS кода в php, но не просто?
- 1 подписчик
- 3 часа назад
- 43 просмотра