@Igorek1999

Как правильно отправлять джейсон с сервера при большом количестве данных?

Подскажите, когда я получаю от БД всего одно совпадение, то у меня отправляется один джейсон на клиент и его нормально обрабатываю, но когда совпадений 2 и более, получается мне отправляет 2 и более джейсонов сторокй и JSON.parse выдает ошибку.

Как мне правильно обрабатывать поток джейсонов на клиенте(когда их много в одну строку) или как правильно отправлять с сервера на клиент такой формат, чтобы отправлялось по одному дежйсону, а не все строкой?

while($row = $result->fetch_assoc()) {
     echo json_encode($row, JSON_UNESCAPED_UNICODE);
}
  • Вопрос задан
  • 74 просмотра
Решения вопроса 4
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Добавлять все в единый массив, а потом его превращать в json
Ответ написан
DevMan
@DevMan Куратор тега PHP
не выводить по одной записи, а выбрать все и отправить один джейсон.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Отдельно готовьте данные, отдельно их отправляйте. Тогда не будет возникать такой проблемы.
$result = ['data' => []];
while($row = $result->fetch_assoc()) {
     $result['data'][] = $row;
}
$result['state' => 'ok'];
...
echo json_encode($result, JSON_UNESCAPED_UNICODE);
Ответ написан
@zkrvndm
Боты, парсеры, расширения
Описанный вами подход неправильный, но если вы не хотите полностью переписывать серверную часть, можно обойтись небольшими изменениями, а именно добавьте между JSON какой-нибудь разделитесь:
while($row = $result->fetch_assoc()) {
     echo json_encode($row, JSON_UNESCAPED_UNICODE) . '{разделитель}';
}

В браузере уже на JavaSсript можно будет разбить ответ на части по разделителю:
response = 'здесь_ваши_полученные_JSON';
array = response.split('{разделитель}');
console.dir(array);

А далее обработать все полученные JSON по одному.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
Сбер Москва
До 240 000 ₽
RecruitIT Москва
от 120 000 до 150 000 ₽
21 окт. 2020, в 22:53
50000 руб./за проект
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект