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

133
03 января 2020, 16:20

Таблица с данными из бд:

 <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;
});

Попробовал file_put_contents("test.txt", $_POST['form_id']); - там сохраняются корректные значения id. Вардамп пост-запроса выглядит следующим образом, т.е. не передаются value кнопок. array(2) { ["form_id"]=> string(1) "1" ["delivered"]=> string(0) "" } В консоли никаких ошибок, php отдаёт 200, только это: [Violation] Forced reflow while executing JavaScript. SQL-запрос корректный, т.е. на чистом php с перезагрузкой страницы отрабатывает корректно. Помогите разобраться, пожалуйста. Нужно чтобы в зависимости от нажатой кнопки заносились 1, 2 или 3 в delivery_status, привязанную к id.

READ ALSO
Добавить новый ключ в имеющийся уже массив foreach

Добавить новый ключ в имеющийся уже массив foreach

Использую PHP 72 Как добавить ключ 'experience' в имеющийся массив $doctors, если в двух foreach ключи одинаковые??

126
Woocommerce, вывод атрибутов под ценой

Woocommerce, вывод атрибутов под ценой

По умолчанию атрибуты товара выводятся под основным фото товара, на странице товараКак можно изменить это расположение атрибутов, чтобы...

152
Soap не авторизируется

Soap не авторизируется

История: Хотя воспользоваться API от курьерской компанииДля работы они предлагают Soap

149
Музыка (мультимедия) в qt c++ [закрыт]

Музыка (мультимедия) в qt c++ [закрыт]

Хотите улучшить этот вопрос? Update the question so it's on-topic for Stack Overflow на русском

137