Unexpected token { in JSON или как заставить это работать?

Всю ночь бьюсь с этой проблемой и вот решил написать сюда, ибо ну капец уже не знаю че делать.

В общем в php все просто. Нужен список, получили список.

$userData = $database->select("account", [
                "user_id",
                "username",
                "first_name",
                "last_name"
            ],[
                "referer_id" => $user_id
            ]);

            foreach ($userData as $data) {
                echo '<div>".data["first_name"]." ".data["last_name"]." ".data["username"]."</div>';
            }

Но как только я решил подгружать список аяксом, у меня либо подгружается последний из списка либо ошибка указанная в заголовке Unexpected token { in JSON Это ошибка ругается на то, что если я помещаю echo json_encode($data);внутрь цикла, то при var userdata = JSON.parse(data); я получаю список объектов которые не разделяются запятым.

$userData = $database->select("account", [
                "user_id",
                "username",
                "first_name",
                "last_name"
            ],[
                "referer_id" => $user_id
            ]);

            foreach ($userData as $data) {
                echo json_encode($data);
            }
{"user_id":"14","username":"daniel","first_name":"Daniel","last_name":"Test"}
//здесь начинает ругаться, и так между всеми объектами.
{"user_id":"15","username":"johndoe","first_name":"John","last_name":"Doe"}

Однако если я выношу echo json_encode($data); за пределы цикла то получаю только последнего выбранного в базе.

$userData = $database->select("account", [
                "user_id",
                "username",
                "first_name",
                "last_name"
            ],[
                "referer_id" => $user_id
            ]);

            foreach ($userData as $data) {
                
            }

            $response = [
               "user_id => $data["user_id"],
               "first_name" => $data["first_name"],
               "last_name" => $data["last_name"],
               "username" => $data["username"]
            ];

            echo json_encode($response);
var userdata = JSON.parse(data);

$.each(userdata,function(key,data) {
     console.log('Name = ' + userdata.first_name + ' Family = '+ userdata.last_name +' Username = '+userdata.username);
    });

Итого: Как правильно сделать, чтобы получать такой же список как я получал когда использовал php foreach? Нужно ли как-то объединять JSONобъекты или подставлять между ними запятую, или все намного проще?


В общем добавил тип dataType: 'json' к запросу и теперь получаю массив с объектами. Только не понятно как его теперь перебрать через for (var key in data)

6: {user_id: "9", user_register: "2021-06-21 20:41:07", username: "daniel5"... email: "[email protected]", first_name: "Daniel 5", …}
7: {user_id: "11", user_register: "2021-06-21 20:43:04", username: "daniel7", email: "[email protected]", first_name: "Daniel 7", …}
8: {user_id: "12", user_register: "2021-06-21 20:43:18", username: "daniel8", email: "[email protected]", first_name: "Daniel 8", …}
9: {user_id: "13", user_register: "2021-06-21 20:43:31", username: "daniel9", email: "[email protected]", first_name: "Daniel9", ...}

Ответы (1 шт):

Автор решения: Developer Vusal

В общем добавил тип dataType: 'json' к запросу и теперь получаю массив с объектами. Только не понятно как его теперь перебрать через for (var key in data)

Как вариант можно так обработать:

for (let [key, value] of Object.entries(data))

Тут более подробно написано: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

→ Ссылка