У меня есть корзина, в которой есть поле количества, содержащее кнопку «плюс», которую пользователь может нажать, чтобы увеличить количество.
Я искал способ обновить DOM без перезагрузки страницы.
Я узнал около AJAX запросов сегодня, и мне удалось написать код таким образом, что если пользователь нажимает кнопку добавления (+), цена за единицу добавляется к общей цене и отображается.
Моя проблема в том, что это работает только с первой попытки, но при последующих щелчках пользовательский интерфейс не обновляется.
Ajax скрипт:
$("#plus_btn").on("click", function (event) {
event.preventDefault();
event.stopPropagation();
var onekg = document.getElementById("onekg").value;
var totalPrice = document.getElementById("totalPrice").value;
var data = {};
data.onekg = onekg;
data.totalPrice = totalPrice;
$.ajax({
url: "/update-shopping-cart",
type: "POST",
data: data,
})
.done(function (result) {
updateDOM(result);
})
.fail(function (err) {
console.log(err);
});
});
var updateDOM = function (result) {
var totalPrice_div = document.getElementById("price_span");
totalPrice_div.innerHTML = result;
};
E JS ПРОСМОТР
<h1>$ 1000</h1>
//Unit price of item
<input type="hidden" name="onekg" id="onekg" value="1000">
<button id="plus_btn" type="button" name="button">+</button>
//Total price to be updated and displayed on the DOM
<span id="price_span" >$ 1000</span>
<input type="hidden" name="totalPrice" id="totalPrice" value="1000">
маршрутов. js
router.route("/update-shopping-cart").post((req, res) => {
console.log(req.body);
let totalPrice = parseInt(req.body.totalPrice) + parseInt(req.body.onekg);
res.status(200);
res.render('includes/totalPrice', {
subTotal: totalPrice
});
res.end();
});
включает / totalPrice.e js - шаблон e js Для обновления DOM
<span id="price_span">Ksh. <%=subTotal %></span>