ajax получает пустой массив из json_encode () - PullRequest
0 голосов
/ 27 октября 2019

Итак, у меня есть этот класс php, где у меня есть функция, которая получает пользователей из базы данных PSQL, но AJAX ведет журнал пустого массива в консоли:

public function getUsers(){
        $query = pg_query(self::$DBH, "select id, name, email, admin from users order by name;");
        $result = array();
        $i = 0;
        while ($row = pg_fetch_row($query)) {
            $result[$i] = $row;
            $i++;
        }
        return $result;
    }

Я использую файл phphandler для вызова функциииз ajax:

<?php
    include_once $_SERVER['DOCUMENT_ROOT'].'/bdd.php';
    require_once 'modele_backend.php';
    $module = new Modele_Backend();
    echo json_encode($module -> getUsers());



?>

и, наконец, AJAX-вызов

$(document).ready(function(){
                $("#user_email").on("input", function(){
                    // Print entered value in a div box
                    $.ajax({
                        url: 'modules/mod_backend/backendHandler.php',
                        type: 'post',
                        dataType: 'json',
                        success: function(response) { console.log(response); }
                    });
                });
            });

Проблема в том, что js продолжает показывать пустой массив в консоли.

json_encode работаетштраф как json_last_error = 0.

Я пытался заменить возврат функции getUsers () на

echo json_encode($result);

, чтобы проверить, удалось ли функции кодировать мой массив, и она действительно появилась какJSON на странице, так что это не кодирование моей проблемы с массивом. Тем не менее, когда AJAX получает результат функции json_encode, он отображает пустой массив.

Спасибо за любую помощь!

Necro.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Выяснилось, что проблема была вовсе не в json_encode, это была проблема с моим статическим классом БД, который дважды включался в вызов AJAX.

В любом случае, спасибо за поддержку

0 голосов
/ 27 октября 2019

Решение 1 Вы должны установить тип содержимого заголовка в вашем php-файле, прежде чем echo

header('Content-type: application/json');

Решение 2 изменить dataType в вашем коде ajaxв html или удалите его, чтобы вернуть значение по умолчанию dataType (default: Intelligent Guess (xml, json, script, or html))

, а затем преобразуйте возвращенную строку в json с помощью метода javascript JSON.parse () .

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