@ikfah012
Не самый умный парень в этом чате

Почему не отрабатывает ajax?

Таблица с данными из бд:
<tr>
                                <td><div class="alert <?=$colorClass?>" role="alert"><p><?=$users['id']?></div></td>
                                <input type="hidden" name="form_id" value="<?=$users['id']?>">
                                <td><div class="alert <?=$colorClass?>" role="alert"><p><?=htmlspecialchars($users['delivery_adress'], ENT_QUOTES)?></p></div></td>
                                <td><div class="alert <?=$colorClass?>" role="alert"><p><?=htmlspecialchars($users['delivery_time'], ENT_QUOTES)?></p></div></td>
                                <td><div class="alert <?=$colorClass?>" role="alert"><p><?=htmlspecialchars($users['surname'], ENT_QUOTES)?> <?=htmlspecialchars($users['name'], ENT_QUOTES)?> <?=htmlspecialchars($users['second_name'], ENT_QUOTES)?></p></div></td>
                                <td><div class="alert <?=$colorClass?>" role="alert"><p><?=htmlspecialchars($users['sum'], ENT_QUOTES)?></p></div></td>
                                <td><button type="button" name="delivery_status" value="1" class="btn btn-xs btn-success mb-3" id="delivered">Отдал</button></td>
                                <td><button type="button" name="delivery_status" value="2" class="btn btn-xs btn-danger mb-3">Отказ</button></td>
                                <td><button type="button" name="delivery_status" value="3" class="btn btn-xs btn-warning mb-3" data-toggle="modal" data-target="#exampleModalLong">Перенос</button></td>
                            </tr>


dost.php, который обрабатывает её:
<?php

require_once('db.php');

if(!empty($_POST['delivery_status']))
{
    $form_id = (int) $_POST['form_id'];
    $status = (int) $_POST['delivery_status'];
    $SQL = "UPDATE Users SET delivery_status='$status' WHERE id='$form_id'";
    $result = mysqli_query($link, $SQL);
}
?>


AJAX, который я написал, и который почему-то не отрабатывает, т.е. в бд не сохраняются данные, полученные от кнопки, а просто загружается пустая страница с dost.php.
$('button[name="delivery_status"]').on('click', function() {
    let $btn = $(this);
    let id = $btn.closest('tr').find('input[name="form_id"]').val(); // получаем id
    // формируем данные
    let data = {
        form_data: id,
        delivery_status: $btn.val()
    };
    $.ajax({
        type: "POST",
        url: "dost.php",
        data: data
    }).done(function() {
        alert("Данные сохранены");
    });
    return false;
});

Я где-то накосячил, не могу понять где :(
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Apostol63
А вы проверили, приходят ли вообще данные в dost.php?
и отправляет ли вообще ajax?
добавьте в ajax success, чтобы проверять то, что сам ajax отработал и посмотрите, что вам приходит в dost.php.
Добавьте file_put_contents к примеру
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
просто загружается пустая страница с dost.php.
что не удивительно, форма просто субмитится, никакой аякс у вас просто не успевает обработаться, как это предотвратить я вообще то с комментариями расписал в вашем прошлом вопросе.
как проверять что происходит:
для яваскрипта есть 2 варианта:
a) нубский вариант - alert('some string'); в принципе позволяет понять что и куда пришло в ходе выполнения скрипта
б) тру подход - console.log(some_var); - выводит в консоль браузера подробную информацию о переменной
Далее - в целом инструменты разработчика в хроме(F12) или например фаерфоксе, которые отслеживают много чего, их вы должны знать хотя бы в общих чертах, почитайте как работать с ними, материала масса.
Теперь - что и куда(и как) отправляется:
Вкладка нетворк в инструментах разработчика показывает все запросы по сети(включая закэшированные), их можно отфильтровать по типам, что очень удобно для отслеживания например именно аякс запросов. В составе каждого запрошенного элемента в частности есть метод, урл, данные и ответ сервера. По нему можно смотреть что отвечал сервер в ответ на аякс, не нужно никаких файлов и прочей хрени, просто смотрим ответ сервера.
На стороне пхп - ПЕРВЫМ ДЕЛОМ если мы отсылаем какие-то данные мы проверяем в каком виде они пришли, то есть первой строчкой при отладке делаем var_dump($_POST); exit; и смотрим что пришло к серверу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы