Я закончу с моим проектом с использованием django, но я хочу, чтобы он был асинхронным, поэтому я использую jquery и ajax, но я застрял прямо сейчас, проблема заключается в том, когда я добавляю товар в корзину, все поля товара в таблицы имеют одинаковые значения, но когда я обновляю, они возвращаются к своим собственным значениям. Может ли кто-нибудь помочь мне с этим, я новичок в использовании ajax.
HTML
<div class="row mx-auto">
<div class="col-12 col-sm-12 col-md-12 col-lg-6 text-center">
<table class="table my_custom_table">
<thead class="my_custom_thead">
<tr>
<th colspan="5">
Your Cart Items
</th>
</tr>
</thead>
<tbody>
{% for cart_item in cart_items %}
<tr class="cart-data">
<td>
<a href="{% url 'beer:product_detail' cart_item.product_format.product.id %}"><img src="{{ cart_item.product_format.product.photo_main.url }}" alt="" class="float-left rounded custom_image"></a>
</td>
<td class="text-left">
<strong class="table-format">{{ cart_item.product_format.bformat }}</strong>
<br>
SKU: {{ cart_item.product_format.id }}
<br>
Unit Price: ${{cart_item.product_format.price}}
<br>
Discount: {{cart_item.product_format.discount}}%
<br>
Qty: <span class="cart-quantity">{{ cart_item.quantity }}</span> x ${{ cart_item.product_format.price }}
</td>
<td class="text-primary">
<strong> ${{ cart_item.sub_total|floatformat:2 }}</strong>
</td>
{% if cart_item.quantity < cart_item.product_format.in_stock %}
<td class="btn-cart">
<a href="{% url 'cart:add_cart' cart_item.product_format.id %}" class="custom_a add-to-cart" data-endpoint="{% url 'cart:add_cart' cart_item.product_format.id %}"><i class="fas fa-plus-circle custom_icon"></i></a><br><a href="{% url 'cart:cart_remove' cart_item.product_format.id %}" class="custom_a"><i class="fas fa-minus-circle custom_icon"></i></a><br><a href="{% url 'cart:full_remove' cart_item.product_format.id %}" class="custom_icon"><i class="fas fa-trash-alt custom_icon"></i></a>
</td>
{% else %}
<td class="btn-cart">
<br><a href="{% url 'cart:cart_remove' cart_item.product_format.id %}" class="custom_a"><i class="fas fa-minus-circle custom_icon"></i></a><br><a href="{% url 'cart:full_remove' cart_item.product_format.id %}" class="custom_icon"><i class="fas fa-trash-alt custom_icon"></i></a>
</td>
<td></td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
Сценарий
<script>
$(document).ready(function(){
/* AJAX add to cart */
var cartAdd = $('.add-to-cart')
cartAdd.unbind('click').click(function(event) {
event.preventDefault();
var thisLink = $(this)
var hrefEndpoint = thisLink.attr('data-endpoint')
var addCartMethod = "GET"
var linkData = thisLink.serialize();
var cartData = $('.cart-data')
var cartQuantity = cartData.find('.cart-quantity')
console.log(cartQuantity)
$.ajax({
url: hrefEndpoint,
method: addCartMethod,
data: linkData,
success: function(data){
var cartData = $('.cart-data')
var cartQuantity = cartData.find('.cart-quantity')
cartData.find('.cart-quantity').text(data.quantity)
cartData = $('tbody tr').first()
var currentPath = window.location.href
if (window.location.href.indexOf('cart') != -1){
updateCart()
}
},
error: function(errorData){
console.log('error')
console.log('error', errorData)
}
})
/* end of AJAX add to cart */
})
function updateCart(){
console.log('In current cart')
}
})
</script>```
views.py
added = True
if request.is_ajax():
subtotal = (product_format.price - product_format.price *
product_format.discount / 100) * cart_item.quantity
productFormat = product_format.bformat
json_data = {
'added': added,
'productFormat': str(productFormat),
'quantity': cart_item.quantity,
'discount': product_format.discount,
'price': product_format.price,
'subtotal': subtotal,
}
return JsonResponse(json_data)
Мой ожидаемый вывод заключается в том, что при нажатии на ссылку добавления это только изменит значение конкретного продукта.