0

Ситуация такая, есть список li задач, клацаю на задачу, вызывается модальное окно, а также передается id в PHP (ajax). В PHP проверяю на существования id, если ок, то делаю запрос в бд и получаю данные. Данные с бд не выводятся в модальное окно, но зато я их вижу в панели разработчика, когда смотрю

СЕТЬ->ПЕРДВАРИТЕЛЬНЫЙ ПРОСМОТР

там я вижу данные и откуда они идут.

Не могу понять, где ошибка в скрипте.... понимаю что проблема в ajax, там я как то неправильно вывожу что ли?????

И когда делаю console.log(data.title);, то в консоли ничего?

jQuery

$(document).ready(function () {
    $.ajax({
        type: 'GET',
        url: '/index.php?route=handler',
        dataType: 'json',
        success: function (data) {
            console.log(data.title);
            $("#modal-task-input").text(data.title);
        }
    })
});

PHP

if (isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    $exec = mysqli_query($connect, "SELECT * FROM `tasks` WHERE `id`='$id'");
    $outTask = [];
    while ($row = mysqli_fetch_assoc($exec)) {
        $outTask = $row['title'];
    }
    echo json_encode($outTask);
}

Модальное окно

<div class="modal" id="editTaskModal" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-body">
        <input type="text" name="task" id="modal-task-input" class="content-input" value="СЮДА ВЫВЕСТИ AJAX'сом" required="required" />
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-close" data-bs-dismiss="modal">Отмена</button>
        <button type="submit" id="modal-btn-disable" class="btn modal-add-task-disabled" disabled>
            Добавить задачу
        </button>
    </div>
</div>
Uman
  • 15
  • 5

1 Answers1

0

Ошибок много. Как минимум вот это

$outTask = [];
while ($row = mysqli_fetch_assoc($exec)) {
    $outTask = $row['title'];
}

В текущем коде данные не складируются в массив, а просто всегда перетирается переменная одним и тем же значением. А чтобы добавлять надо писать

$outTask[] = $row['title'];

Но что при первом подходе, что при втором - ожидать data.title не имеет смысла, потому что в первом никакого title вообще нет, во втором тоже, но плюс к этому приходит вообще массив. Так что в текущем коде никаких title в response не может быть при всём желании. И его либо надо добавить, либо по-другому строить логику (типа перебор массива или делать data.join('')) и т.д.

А то, что находится в ответе можно спокойно с помощью ОТЛАДКИ посмотреть как на языке PHP так и на языке Javascript и в первую очередь надо смотреть содержание всей переменной

  • в php я исправил outTask[] = $row; . В скрипте я сделал data = jQuery.parseJSON(data); $.each(data, function (i, item) { $("#asd").append(item.title); });

    и в отладке я вижу ["text text"] 0: "text text"

    но в модалке пусто(?

    – Uman Jan 04 '23 at 13:09
  • Зачем parseJSON на УЖЕ JSON данных? Кто такой asd? в отладке у вас нет title но вы упорно пытаетесь его добыть....что для вас есть отладка? – Алексей Шиманский Jan 04 '23 at 13:21
  • asd это так для проверки вывода title, для меня отладка это место где я вижу что приходит или куда уходит......... значит я не понимаю как правильно вывести ajax данные?! – Uman Jan 04 '23 at 13:33
  • Возможно......... Если в итоге в ответе от сервера есть данные, в которых есть слово title - то да, надо понимать структуру и правильно её парсить в нужные места, если там нет слова то значит неправильно что-то формируется......... https://ru.stackoverflow.com/a/701140/191482 - отладка JS , https://ru.stackoverflow.com/a/701146/191482 - отладка php – Алексей Шиманский Jan 04 '23 at 13:37