Arramis
Новичок
Всем привет, проблема такая : вытаскиваю данные из бд :
// перед пребразовывание в JSON строку print_r($data); показывает такой массив:
Array
(
[0] => Array
(
[sentence_en] => data1
[sentence_arm] => data2
)
[1] => Array
(
[sentence_en] => data3
[sentence_arm] => data4
)
...
)
// после преобразования (получаем такую JSON строку:
{"sentence_en":"data1.","sentence_arm":"data2"},{"sentence_en":data3","sentence_arm":"data4"}, ...
далее делаю ajax запрос на получение этих данных в .js файле (чистый javascript):
dialogs_request.onreadystatechange = function () {
if (http_request.readyState == 4)
element.innerHTML = dialogs_request.statusText;
var response = http_request.responseText;
var data = JSON.parse(response); // здесь выдаётся ошибка
alert(data.sentence_en);
for (var i in data) {
alert(data[\i]);
}
}
получаю две ошибки на строке var data = JSON.parse(response);
1)SyntaxError: JSON.parse: unexpected end of data
2)SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
когда я вытаскивал только одну строку из таблицы бд - всё нормально парсилось джаваскриптом, тоесть
получается что в JSON строке не может быть ключей с одинаковыми названиями ?? тогда какое будет решение когда массив из бд выходит многомерный где имя колонки в таблице есть ключ этого ассоциативного массива ?? (
PHP:
$data = array();
$query_dialogs = $db_link -> query("SELECT `sentence_en`,`sentence_arm` FROM `dialogs`
WHERE `dialog_number` = 'N001' ORDER BY `id`");
while ($sentence = $query_dialogs -> fetch_assoc()) {
$data[] = $sentence;
}
echo $data = preg_replace("#[\[\]]#", "", json_encode($data)); // удаляю квадратные скобки чтобы JSON строка была валидной
Array
(
[0] => Array
(
[sentence_en] => data1
[sentence_arm] => data2
)
[1] => Array
(
[sentence_en] => data3
[sentence_arm] => data4
)
...
)
// после преобразования (получаем такую JSON строку:
{"sentence_en":"data1.","sentence_arm":"data2"},{"sentence_en":data3","sentence_arm":"data4"}, ...
далее делаю ajax запрос на получение этих данных в .js файле (чистый javascript):
dialogs_request.onreadystatechange = function () {
if (http_request.readyState == 4)
element.innerHTML = dialogs_request.statusText;
var response = http_request.responseText;
var data = JSON.parse(response); // здесь выдаётся ошибка
alert(data.sentence_en);
for (var i in data) {
alert(data[\i]);
}
}
получаю две ошибки на строке var data = JSON.parse(response);
1)SyntaxError: JSON.parse: unexpected end of data
2)SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
когда я вытаскивал только одну строку из таблицы бд - всё нормально парсилось джаваскриптом, тоесть
получается что в JSON строке не может быть ключей с одинаковыми названиями ?? тогда какое будет решение когда массив из бд выходит многомерный где имя колонки в таблице есть ключ этого ассоциативного массива ?? (