#python #html #django #ajax
#python #HTML #django #ajax
Вопрос:
У меня есть это на моей домашней странице
каждый раз, когда клиент нажимает Add to cart
, он меняется на this, и данные будут вставлены в мою базу данных
Я использую AJAX, чтобы предотвратить перезагрузку / обновление страницы
<script type="text/javascript">
$(document).ready(function(){
$('#Insert_form').submit(function(){
event.preventDefault();
var that = $(this);
$.ajax({
url: "{% url 'batchaddtocartHomepage' %}",
type: 'POST',
data: that.serialize()
,success: function(data){
console.log('Success!');
}
});
return false;
});
});
</script>
мой views.py
def batchaddtocartHomepage(request):
.....
insert = CustomerPurchaseOrderDetail(
....
)
insert.save()
data = {}
data['success'] = True
return HttpResponse(json.dumps(data), content_type="application/json")
это мой html
{% for product in bought_item %}
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="{{product.image.url}}" style="width:250px;height:250px;" alt="" />
<form method="POST" id="Insert_form" enctype="multipart/form-data">{% csrf_token %}
<span style="text-decoration: line-through;">amp;#8369;amp;nbsp;{{product.price}}</span>
<h2><span >{{product.other_discount_price_formula|floatformat:'2'|intcomma}}</span></h2>
<div style="height: 65px;"><p>{{product.product}}</p></div>
<div id="qty" style="display:none;">
<div class="quantity buttons_added" style="width: 30%;">
<input type="submit" value="-" class="minus" formaction="/updatecart_index/">
<input type="number" step="1" min="1" max="99" name="quantity" value="1" title="Qty" class="divshow input-text qty text" size="4" pattern="" inputmode="">
<input type="submit" value=" " class="plus" formaction="/updatecart_index/">
</div>
</div>
<input type="submit" value="Add to cart" id="btn" onclick="myFunction()" class="btn btn-default add-to-cart">
</form>
</div>
</div>
<div class="choose">
<ul class="nav nav-pills nav-justified">
<li><a href="{% url 'Vegetables' %}?id={{product.id}}"><i class="fa fa-plus-square"></i>View Product 1</a></li>
</ul>
</div>
</div>
</div>
{% endfor %}
мой скрипт
<script>
function myFunction() {
var x = document.getElementById("qty");
var btn = document.getElementById("btn");
if (x.style.display === "none") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
</script>
ПРОБЛЕМА, с которой я столкнулся, кнопка меняется только при обновлении страницы.
это то, что я хочу сделать на своем собственном сайте https://www.landers.ph / (пожалуйста, попробуйте нажать кнопку landers.ph сайт) я надеюсь, что это даст вам представление о том, какую функциональность я хочу.
ОБНОВЛЕНИЕ я удаляю script
и добавляю к некоторому коду в моем ajax
<script type="text/javascript">
$(document).ready(function(){
$('#Insert_form').submit(function(){
event.preventDefault();
var that = $(this);
$.ajax({
url: "{% url 'batchaddtocartHomepage' %}",
type: 'POST',
data: that.serialize()
,success: function(data){
console.log('Success!');
var x = document.getElementById("qty");
var btn = document.getElementById("btn");
x.style.display = "block";
btn.style.display = "none";
}
});
return false;
});
});
</script>
моя проблема в том, что когда я нажимаю на Большое яйцо (1 лоток) Add to cart
, что меняется, это кнопка спелой папайи Соло (1 шт.)
Комментарии:
1. Вы имеете в виду
remove
кнопку? где эта кнопка? я не вижу эту кнопку в вашем коде.2. удалить, когда пользователь нажимает на
Add to cart
я использовалinput type submit
3. Итак, вам нужно изменить эту кнопку, чтобы удалить кнопку? Но ваш js-код предназначен для скрытия этой кнопки? Кроме того, пожалуйста, подробнее о проблеме, с которой вы столкнулись. Я видел ваш веб-сайт, о котором вы говорили, после обновления отображается эта
remove
кнопка.. но я не вижу никакой кнопки после обновления, и под продуктом отображается только количество div.4. если пользователь нажмет
<input type="submit" value="Add to cart" id="btn" onclick="myFunction()" class="btn btn-default add-to-cart">
, он изменится наquantity /-
5. я просто хочу, чтобы функциональность landers.ph на мой сайт
Ответ №1:
Вам нужно написать свой скрытый код внутри функции успеха ajax.Кроме того, используйте class
selector вместо id
.Итак, поскольку у вас уже есть that
переменная, которая ссылается на current form
, а кнопка и количество div находятся внутри формы, которую вы можете использовать that.find(".add-to-cart").hide();
и that.find(".qty").show();
для скрытия и отображения ваших элементов.
Демонстрационный код :
$(document).ready(function() {
$('.Insert_form').submit(function() {
event.preventDefault();
var that = $(this);
/*$.ajax({
url: "{% url 'batchaddtocartHomepage' %}",
type: 'POST',
data: that.serialize(),
success: function(data) {*/
that.find(".add-to-cart").hide(); //hide button
that.find(".qty").show(); //show qty div
/* }
});
return false;
});*/
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="{{product.image.url}}" style="width:250px;height:250px;" alt="" />
<!--use class for form-->
<form method="POST" class="Insert_form" enctype="multipart/form-data">{% csrf_token %}
<span style="text-decoration: line-through;">amp;#8369;amp;nbsp;{{product.price}}</span>
<h2><span>{{product.other_discount_price_formula|floatformat:'2'|intcomma}}</span></h2>
<div style="height: 65px;">
<p>{{product.product}}</p>
</div>
<!--use class for qty-->
<div class="qty" style="display:none;">
<div class="quantity buttons_added" style="width: 30%;">
<input type="submit" value="-" class="minus" formaction="/updatecart_index/">
<input type="number" step="1" min="1" max="99" name="quantity" value="1" title="Qty" class="divshow input-text qty text" size="4" pattern="" inputmode="">
<input type="submit" value=" " class="plus" formaction="/updatecart_index/">
</div>
</div>
<input type="submit" value="Add to cart" id="btn" class="btn btn-default add-to-cart">
</form>
</div>
</div>
<div class="choose">
<ul class="nav nav-pills nav-justified">
<li><a href="{% url 'Vegetables' %}?id={{product.id}}"><i class="fa fa-plus-square"></i>View Product 1</a></li>
</ul>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="{{product.image.url}}" style="width:250px;height:250px;" alt="" />
<form method="POST" class="Insert_form" enctype="multipart/form-data">{% csrf_token %}
<span style="text-decoration: line-through;">amp;#8369;amp;nbsp;{{product.price}}</span>
<h2><span>{{product.other_discount_price_formula|floatformat:'2'|intcomma}}</span></h2>
<div style="height: 65px;">
<p>{{product.product}}</p>
</div>
<div class="qty" style="display:none;">
<div class="quantity buttons_added" style="width: 30%;">
<input type="submit" value="-" class="minus" formaction="/updatecart_index/">
<input type="number" step="1" min="1" max="99" name="quantity" value="1" title="Qty" class="divshow input-text qty text" size="4" pattern="" inputmode="">
<input type="submit" value=" " class="plus" formaction="/updatecart_index/">
</div>
</div>
<input type="submit" value="Add to cart" id="btn" class="btn btn-default add-to-cart">
</form>
</div>
</div>
<div class="choose">
<ul class="nav nav-pills nav-justified">
<li><a href="{% url 'Vegetables' %}?id={{product.id}}"><i class="fa fa-plus-square"></i>View Product 1</a></li>
</ul>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="{{product.image.url}}" style="width:250px;height:250px;" alt="" />
<form method="POST" class="Insert_form" enctype="multipart/form-data">{% csrf_token %}
<span style="text-decoration: line-through;">amp;#8369;amp;nbsp;{{product.price}}</span>
<h2><span>{{product.other_discount_price_formula|floatformat:'2'|intcomma}}</span></h2>
<div style="height: 65px;">
<p>{{product.product}}</p>
</div>
<div class="qty" style="display:none;">
<div class="quantity buttons_added" style="width: 30%;">
<input type="submit" value="-" class="minus" formaction="/updatecart_index/">
<input type="number" step="1" min="1" max="99" name="quantity" value="1" title="Qty" class="divshow input-text qty text" size="4" pattern="" inputmode="">
<input type="submit" value=" " class="plus" formaction="/updatecart_index/">
</div>
</div>
<input type="submit" value="Add to cart" id="btn" class="btn btn-default add-to-cart">
</form>
</div>
</div>
<div class="choose">
<ul class="nav nav-pills nav-justified">
<li><a href="{% url 'Vegetables' %}?id={{product.id}}"><i class="fa fa-plus-square"></i>View Product 1</a></li>
</ul>
</div>
</div>
</div>