Отправка JSON с сервера на клиент?

Доброго времени суток!
Есть роут для выдачи всех покупателей:
$app->get('/api/customers', function(Request $request, Response $response){
    $sql = "SELECT * FROM customers";
    try{
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();
        $stmt = $db->query($sql);
        $customers = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($customers);
    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    }
});

Как мне отправить JSON с API чтобы я мог его получить на клиенте например так:
let data;
        const xhr = new XMLHttpRequest();
        xhr.open('GET', '/api/customers', true);
        xhr.onload = () => {
            if (xhr.status !== 200) {
                console.log(xhr.status + ': ' + xhr.statusText);
            } else {
                data = JSON.parse(xhr.responseText);
                console.log(data);
            }
        };
        xhr.send();

Сейчас выводит такое:
5d5bb5bfa248b335136874.jpeg
  • Вопрос задан
  • 4024 просмотра
Пригласить эксперта
Ответы на вопрос 3
Вариант 1. Сделать как написано в документации . Вместо
echo json_encode($customers);
Делаем так:
return $response->withJson($data);

Вариант 2.
header('Content-Type: application/json'); //HTTP загловок
echo json_encode($customers);
die(); //Стоп. Не возвращаем стандартный response от слима
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yippee ki-yay
Ну если вы принципиально не хотите отдавать результат через $response, то допишите exit(); в конец функции.
Ответ написан
glaphire
@glaphire
PHP developer
header('Content-Type: application/json');
 echo json_encode($customers);

Укажите тим возвращаемого ответа через header явно
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.
21 сент. 2019, в 00:13
5000 руб./за проект
20 сент. 2019, в 20:02
3000 руб./за проект
20 сент. 2019, в 19:04
80000 руб./за проект