Нет данных ответа для этого запроса после запросов POST в AJAX - PullRequest
0 голосов
/ 27 мая 2019

Я использовал запрос AJAX POST, чтобы заполнить свои данные.В моем php-файле у меня есть запрос, я сохраняю его в массиве и возвращаю как json.Но он возвращает «Нет данных ответа для этого запроса», хотя поля в php и базе данных одинаковы.Если я включу имя пользователя, произойдет ошибка.Пожалуйста, помогите мне исправить это.

Я уже изменил имя поля моей базы данных с UserName на username, но все равно не будет работать.

PHP File.(user_action.php)

if ($_POST["action"] == 'fetch') {
    $query = "SELECT * FROM userslist ";
    if (isset($_POST["search"]["value"])) {
        $query .= 'WHERE UserName LIKE "%' . $_POST["search"]["value"] . '%" ';
    }
    if (isset($_POST["order"])) {
        $query .= 'ORDER BY ' . $_POST['order']['0']['column'] . ' ' . $_POST['order']['0']['dir'] . ' ';
    } else {
        $query .= 'ORDER BY id DESC ';
    }
    if ($_POST["length"] != -1) {
        $query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
    }

    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    // var_dump($result);
    // exit();
    $data = array();
    $filtered_rows = $statement->rowCount();
    foreach ($result as $row) {
        // var_dump($row["window"]);
        // exit();
        $sub_array = array();
        $sub_array[] = $row["id"];
        $sub_array[] = $row['UserName'];
        $sub_array[] = $row["UserDesignation"];
        $sub_array[] = $row["UserType"];
        $sub_array[] = $row["UserDesc"];
        $sub_array[] = $row["status"];
        $sub_array[] = $row["window"];
        $sub_array[] = '<button type="button" name="edit_user" class="btn btn-primary btn-sm edit_user" id="' . $row["id"] . '"><i class="fa fa-pencil"></i> Edit</button> <button type="button" name="delete_user" class="btn btn-danger btn-sm delete_user" id="' . $row["id"] . '"><i class="fa fa-trash"></i> Delete</button>';
        $data[] = $sub_array;
    }

    $output = array(
        "draw"    => intval($_POST["draw"]),
        "recordsTotal"  =>  $filtered_rows,
        "recordsFiltered" => get_total_records($connect, 'userslist'),
        "data"    => $data
    );
    echo json_encode($output);
}

AJAX (user.php)

var dataTable = $('#user_table').DataTable({
    "processing": true,
    "serverSide": true,
    "order": [],
    "ajax": {
        url: "dal/user_action.php",
        type: "POST",
        data: {
            action: 'fetch'
        }
        // dataType: "json",
        // error: function(result) {
        //     alert(result);
        // }0
    },
    "columnDefs": [{
        "targets": [0, 1, 2, 3, 4, 5, 6],
        // "targets": [0, 1, 2, 3, 4, 5, 6, 7],
        "orderable": false,
    }, ],
});

Ошибки:

Предупреждение DataTables: таблица id = user_table - Неверный ответ JSON.Для получения дополнительной информации об этой ошибке см. http://datatables.net/tn/1

и

Нет данных для ответа на этот запрос

1 Ответ

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

Похоже, что ваш запрос искажается в этом случае, потому что вы не установили значение $_POST['length'], а следующее сравнение оценивается как true

if ($_POST["length"] != -1){ ... }

Попробуйте сначала установить значения по умолчанию

$length = (isset($_POST["length"]))? $_POST["length"] : -1;
$start = (isset($_POST["start"]))? $_POST["start"] : 0;
if ($_POST["length"] > -1) {
    $query .= 'LIMIT ' . $start . ', ' . $length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...