#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. Это исправлено! Спасибо ^^