Исправление ожидаемого массива, но вместо этого получил объект? - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь использовать мой API для отображения данных из базы данных, но я получаю эту ошибку:

"Expected array but received: {"data":{"useri":[{"ID":"1","username":"asdas","city":"asdasd","age":"20"},"

Как мне сделать так, чтобы я получал массив только с идентификатором: 1?

PHP:

if($num > 0){
        $users_array = array(); //stocam userii intr-un array
        $users_array['useri'] = array();

        while($num = $rdej->fetch(PDO::FETCH_ASSOC)){
            extract($num);

            $users_item = array(
                "ID" => $ID,
                "username" => $username,
                "city" => $city,
                "age" => $age
            );

            array_push($users_array['useri'], $users_item);


        }

        // 200 OK - request reusit
        http_response_code(200);

        echo json_encode($users_array);

JS:

crud.controller("DbController",['$scope','$http', function($scope,$http){


    getInfo();
        function getInfo(){

        $http.post('http://vladmaican.dev.ascensys.ro/first/api/users/read.php').then(function(data){
        // Stored the returned data into scope
        $scope.users = data;
            });
        }
}]);

Как это сделать, чтобы получить массив только с идентификатором: 1?

Также, html:

<tr ng-repeat="user in users| filter:search_query">
            <td>
            <span>{{user.username}}</span></td>
            <td>{{user.city}}</td>
            <td>{{user.age}}</td>
            <td>
</tr>

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Это ваш код, который создает дополнительную информацию, поэтому просто прекратите добавлять вложенные массивы, которые вы не хотите иметь

if($num > 0){
    $users = [];

    while($user = $rdej->fetch(PDO::FETCH_ASSOC)){

        $users[] = array(
                        "ID" => $user['ID'],
                        "username" => $user['username'],
                        "city" => $user['city'],
                        "age" => $user['age']
                    );
    }

    // 200 OK - request reusit
    http_response_code(200);

    echo json_encode($users);

Попробуйте не использовать extract() специально не в глобальном масштабе

0 голосов
/ 08 мая 2019

Если в качестве индекса указано «useri», json_encode всегда выводит объект json.

Чтобы вывести массив json, кодируемый массив должен быть просто индексированным массивом.

$indexed_array = array($user1, $user2);

$associative_array = array("user1" => $user1, "user2" => $user2);

Таким образом, вы можете просто сделать что-то вроде этого

if($num > 0){
    $users_array = array(); //stocam userii intr-un array

    while($num = $rdej->fetch(PDO::FETCH_ASSOC)){
        extract($num);

        $users_item = array(
            "ID" => $ID,
            "username" => $username,
            "city" => $city,
            "age" => $age
        );

        array_push($users_array, $users_item);


    }

    // 200 OK - request reusit
    http_response_code(200);

    echo json_encode($users_array);
}

Если вам нужна ссылка на useri, вы можете сделать это в javasript на стороне клиента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...