Задать вопрос
@yourbatya
Разрабатываю разработки

Как поправить запрос ajax на сабмит формы?

Привет всем. Пытаюсь сохранять данные в из инпутов в форме через ajax. Уже видел здесь подобное решение, но у меня всё равно не хочет работать почему-то.
Это форма:
<form method="post" action="" name="save">
<input type="text" name="del" value="">
<input type="hidden" name="id" value="<?=$test['id']?>">                            
<input type="text" name="summa" value="">
<input type="text" name="logic" value="">
<button type="submit" name="save">Save</button>
</form>

А это сам ajax:
$(function () {
    $('.save').on('submit', function (e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "test.php",
            data: $(this).closest('form').serialize(),
            success: function() {
                alert("Данные сохранены");
            }
        });
    });
});

И вот test.php:
if(isset($_POST['save']))
{
$link->set_charset("utf8");
$id = (int)$_POST['id'];
$summa = (int)$_POST['summa'];
$del = (int)$_POST['del'];
$log = strip_tags(trim($_POST['logic']));
$mysql = "UPDATE Users SET logic='$log', sum='$summa', del='$del' WHERE id=$id";
$result = mysqli_query($link, $mysql);
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
Я бы это сделал так:
Клик

форма:
<input type="text" id="del" name="del" value="">
<input type="hidden" id="id" name="id" value="<?=$test['id']?>">                            
<input type="text" id="summa" name="summa" value="">
<input type="text" id="logic" name="logic" value="">
<button id="save" name="save">Save</button>

ajax:
$("#save").click(function(){
       $.ajax({
           type: "POST",
           'dataType': 'json',
           url: "test.php",
            data: {
               id: $('#id').val(),
               summa: $('#summa').val(),
               del: $('#del').val(),
               logic: $('#logic').val(),
           },
           success: function(data) {
               if(data['status'] == 'success'){
                   alert('Данные переданы');
               }
               else{
                   alert('Произошла ошибка!');
               }
           }
       });
    });

обработчик:
$link->set_charset("utf8");
$id = (int)$_POST['id'];
$summa = (int)$_POST['summa'];
$del = (int)$_POST['del'];
$log = strip_tags(trim($_POST['logic']));
$mysql = "UPDATE Users SET logic='$log', sum='$summa', del='$del' WHERE id=$id";

if(!mysqli_query($link, $mysql)){
    $status = 'error';
}
else{
    $status = 'success';
}
echo json_encode(['status' => $status]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Eridani
@Eridani
Мимо проходил
В jquery вы вызываете селектор с классом save, у вашей формы класса save нет.
Если на то пошло, то $('form[name="save"]')
Ответ написан
Ваш ответ на вопрос

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

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