html - 如何使用 AJAX 响应使用 Django 更改动态呈现的表内的跨度值
问题描述
所以我有一个 Django 网站。我有一个产品页面,当我使用“添加到购物车”按钮将特定商品添加到购物车时,该商品会根据商品主键添加为订单商品。现在我有一个购物车页面,我可以在其中查看已经是订单项目的特定产品,这是使用这段代码动态呈现的:
我的 cart.html 页面
<tbody>
{% for order in orders %}
<tr>
<th scope="row">
<div class="order-quantity">
<span id="order_quantity">{{order.quantity}}</span>
<button data-url="{% url 'add' order.id %}" class="edit-quantity" id="plus">+</button>
<button data-url="{% url 'subtract' order.id %}" class="edit-quantity" id="subtract">-</button>
</div>
</th>
<td><img src="{{order.item.product_image.url}}" alt="" width="70" height="70"></td>
<td>{{order.item.product_name}}</td>
<td> <span>₱</span> {{order.total_item_price}}</td>
</tr>
{% endfor %}
</tbody>
现在请注意,我有一个带有数据 url 的添加数量按钮,因为我想使用 AJAX 响应自动更改跨度数量。现在我想出了如何在单击订单项目时控制台记录特定数量,例如,如果我单击订单项目 Nike,在我的控制台上我会看到订单数量,但我不知道如何更改跨度文本因为它是动态渲染的。请帮忙! 我的购物车页面有两个按钮和数量范围。
使用此 Jquery 代码:
<script>
$(document).ready(function() {
$("tbody").on('click', '#plus', function() {
var quantity =$("tbody").find("#order_quantity").text("hellooooo")
$.ajax({
url : $(this).data("url"),
success : function(response) {
data = $.parseJSON(response.order)
console.log(data.quantity)
}
})
})
})
</script>
解决方案
您不能对多个元素使用相同的 id,因此请将它们更改为 class selector 。然后,您可以使用.find()
和closest()
获取所需的跨度引用并使用 更新其值.text()
。
演示代码:
$("tbody").on('click', '.edit-quantity', function() {
var quantity = $(this).closest("tr").find("span.order_quantity")
//uncomment ajax..on your side
/*$.ajax({
url: $(this).data("url"),
success: function(response) {
data = $.parseJSON(response.order)*/
quantity.text(29) //data.quantity
/*}
})*/
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<table>
<tbody>
<tr>
<th scope="row">
<div class="order-quantity">
<!--use class-->
<span class="order_quantity">8</span>
<button data-url="{% url 'add' order.id %}" class="edit-quantity plus">+</button>
<button data-url="{% url 'subtract' order.id %}" class="edit-quantity subtract">-</button>
</div>
</th>
<td><img src="{{order.item.product_image.url}}" alt="" width="70" height="70"></td>
<td>Somethings..</td>
<td> <span>₱</span> 1990</td>
</tr>
<tr>
<th scope="row">
<div class="order-quantity">
<span class="order_quantity">9</span>
<button data-url="{% url 'add' order.id %}" class="edit-quantity" id="plus">+</button>
<button data-url="{% url 'subtract' order.id %}" class="edit-quantity" id="subtract">-</button>
</div>
</th>
<td><img src="{{order.item.product_image.url}}" alt="" width="70" height="70"></td>
<td>Somethings..</td>
<td> <span>₱</span> 1990</td>
</tr>
</tbody>
</table>
推荐阅读
- c# - ComboBox 中的 WPF MVVM 绑定,两个外键都引用同一个表
- excel - VBA删除最后粘贴范围下方的单元格
- javascript - 如何检查对象数组中是否存在唯一索引
- android - Android Studio 拒绝在除 Android R 之外满足所需 API 级别的设备上运行应用程序
- c++ - 快速排序算法:线程 1 EXC 错误访问(代码=2)
- javascript - 如何通过动态输入更改二维数组的索引
- java - 如文档中所提到的,如何在 java gRPC 中交换传输?
- python - django.db.utils.ProgrammingError:无法将类型 uuid 转换为整数
- linker - 编译器中链接概念的混淆
- php - VScode 中的 Xdebug 不适用于 MacOs 中的“工匠服务”