Успешный ответ Ajax не отображает эхо-сообщение из кода PHP

#php #mysql #ajax

#php #mysql #ajax

Вопрос:

Я пытаюсь разработать функциональность «Добавить в корзину» в моем PHP-проекте. Вот код.

Это форма, из которой я беру данные о продукте.

форма

 <form class="product-form" method="POST">
                        <input name="product_id" type="hidden"
                            value="<?=$data['id']?>">
                        <input name="user_id" type="hidden" value="1">
                        <button name="trending-submit" type="submit" class="btn btn-success">Add To
                            Cart</button>
                    </form>
 

ajax

 $(".product-form").submit(function () {
    var form_data = $(this).serialize();
    var button_content = $(this).find("button[type=submit]");
    button_content.html("Adding...");
    $.ajax({
      url: "./includes/add-to-cart.php",
      type: "POST",
      data: form_data,
      dataType: "html",
      success: function (response) {
        alert(response);
        $(".cart-quantity").html(response);
        button_content.html("Add to Cart");
      },
    });
    return false;
  });
 

«Предупреждение (ответ)» вообще ничего не отображает.

PHP-код, который вызывает функции объекта cart.

PHP

     <?php
ob_start();


require("classes/Database.php");
$db = new Database();

require("classes/Cart.php");
$cart = new Cart($db);


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['product_id'] != null amp;amp; $_POST['user_id'] != null) {
        $cart->addToCart($_POST['product_id'], $_POST['user_id']);
    }

    $total = $cart->showCartQuantity();
    echo $total;
    exit;
}
 

Комментарии:

1. Примечание: проверки ваших $_POST индексов null недостаточно (он все равно может выдавать уведомления «Неопределенный индекс»). Используйте isset() вместо этого.

2. Поскольку вы создаете интернет-магазин, я сомневаюсь, что вы также захотите, чтобы в вашу корзину добавлялись пустые идентификаторы / идентификаторы продуктов; используйте empty()

Ответ №1:

Вы не можете использовать относительные пути с $.ajax() . Вместо этого вы должны использовать URL-адрес (включая полное доменное имя), где вы хотите ОПУБЛИКОВАТЬ данные.

Проверьте вкладку сети в вашем браузере и найдите запрос XHR для получения дополнительной информации.

Кроме того, вы должны добавить e.preventDefault() , чтобы предотвратить поведение HTML по умолчанию <form> , которое заключается в обновлении страницы (т. Е. измените местоположение браузера на URL, указанный в атрибуте HTML <form> ‘s action ).

 $(".product-form").submit(function (e) {
    e.preventDefault();

    var form_data = $(this).serialize();
    var button_content = $(this).find("button[type=submit]");
    button_content.html("Adding...");

    $.ajax({
        url: "http://localhost/ajaxfile.php", // Full URL of PHP file
        type: "POST",
        data: form_data,
        dataType: "html",
        success: function (response) {
        alert(response);
        $(".cart-quantity").html(response);
        button_content.html("Add to Cart");
        },
    });

    return false;
});
 

Комментарии:

1. Это исправлено! Спасибо ^^