AJAX-форма отправляет, но PHP-скрипт не работает - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть эта форма, которая просматривает некоторые продукты в моей базе данных:

<?php
    $sql = "SELECT * FROM products WHERE top = 'yes' and everything = 'true'"; 
    $featured = mysqli_query($conn,$sql);
?>

<?php while ($product = mysqli_fetch_assoc($featured)): ?>

<form class="myform" method="POST" class="ajax">
    <input type="hidden" name="ID" value="<?=$product['id'];?>">

    <input type="hidden" name="salec" value="<?=$product['sale'];?>">

    <input type="hidden" name="hidden_name" value="<?=$product['title'];?>">

    <input type="hidden" name="hidden_price" class="hidden_price" value="<?=$product['price'];?>">

    <input type="hidden" name="hidden_list_price" class="hidden_list_price" value="<?=$product['list_price'];?>">

    <input type="hidden" name="collect" class="collect" value="<?=$product['collection'];?>">

    <input type="hidden" name="himg" class="himg" value="<?=$product['image'];?>">

    <select name="quantity" class="quantity">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>

    <input type="submit" class="button" name="cartbtn" value="Quick Add-to-Cart">

</form>

<?php endwhile ?>

В форме нет ничего плохого.Я добавил это для ясности.Вот код AJAX, который отправляет данные формы в отдельный скрипт PHP:

<script type="text/javascript">

$('.myform').on('submit', function (e) {
    e.preventDefault();

      $.ajax({
        type: 'post',
        url: '../PHP_Scripts/quick_cart.php',
        data: $('form').serialize(),
        success: function () {
          alert('form was submitted');
        }
    });
});

</script>

Хорошо, значит, PHP_Scripts/quick_cart.php не выполняет то, что мне нужно, просто эхо:

<?php
     if (isset($_POST['cartbtn'])) {
         echo "hello";
     }
?>

Это всего лишь тест, чтобы увидеть, работает ли он на самом деле или нет.Предупреждение срабатывает нормально, но эхо не появляется.

1 Ответ

0 голосов
/ 07 декабря 2018

Это потому, что вы пытаетесь проверить кнопку отправки сообщения, переданную сериализованной формой .

Ajax post serialize () не включает имя и значение кнопки Они не считаются «успешными контролями».Это связано с тем, что метод serialize () не может узнать, какая кнопка была нажата.

РЕШЕНИЕ №1: Попробуйте заменить PHP_Scripts/quick_cart.php на

if (!empty($_POST)){
 echo "hello";
}

Это в общем, чтобы проверить, есть ли действие post.

РЕШЕНИЕ № 2: Если вы все еще хотите проверить кнопку, вам следует объединить это в ваших сериализованных данных допереход на AJAX.

Отредактируйте свой JavaScript:

<script type="text/javascript">

$('.myform').on('submit', function (e) {
    e.preventDefault();
    var myform=$('.myform').serialize();
    var curSubmit = $("input[type=submit]",this);

    var myform = myform
    + '&' 
    + encodeURI(curSubmit.attr('name'))
    + '='
    + encodeURI(curSubmit.attr('value'))
;
      $.ajax({
        type: 'post',
        url: '../PHP_Scripts/quick_cart.php',
        data: myform,
        success: function () {
          alert('form was submitted');
        }
    });
});

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...