i am trying to send product id using ajax but i am getting same id always
{% for product in products %}
<div id="product">
<a href = '#'>
{{ product.id }}
<form id="productfrm">
<input type = "hidden" name = "productid" value="{{ product.id }}">
</form>
</a>
</div>
{% endfor %}
here is the ajax script
<script type="text/javascript">
$(document).ready(function(){
$('#product>a').on('click',function(){
event.preventDefault();
var fData = $("#productfrm").serialize();
console.log(fData)
$.ajax({
type: "GET",
url: "{% url 'storeView' user=store.user %}",
data: fData,
success: function(data){
alert('success');
},
error: function(response, error) {
alert(error);
}
});
})
});
</script>
what can i do to send unique product id on the click of div thanks in advance
答案 0 :(得分:1)
你真的好像不需要这里的表格。如果你想根据点击的productId
获取一些数据,只需在你的超链接上有一个onclick监听器:
{% for product in products %}
<a href = '#' onclick="getStoreView(e, {{ product.id }})">
{{ product.id }}
</a>
{% endfor %}
然后在你的js中,有这个功能:
<script type="text/javascript">
function getStoreView(event, productId) {
event.preventDefault();
console.log(fData);
// Send productId as query param of url
$.ajax({
type: "GET",
url: "{% url 'storeView' user=store.user %}",
data: fData,
success: function(data) {
alert('success');
},
error: function(response, error) {
alert(error);
}
});
});
</script>
答案 1 :(得分:0)
与Rohit评论一样,您不应在页面上多次使用相同的ID。每当您的循环呈现产品时,它将打印一个带有ID&#34; productfrm&#34;的表单。您正在使用它作为fData var的选择器,这是您的脚本出错的地方。 jQuery不知道使用这个选择器你正在寻找当前产品中的表单。
您可以做的一件事是从表单中删除ID。然后改变
var fData = $(this).find('form').serialize();
到
Surface with size (w=1920, h=1080) and format 0x1 is not valid,
size not in valid set: [1920x1088, 1440x1088, 1456x832, 1088x1088,
1280x720, 960x720, 960x544, 720x720, 800x480, 768x464, 720x480,
768x432, 640x480, 544x544, 576x432, 640x384, 640x368, 480x480,
480x320, 384x288, 352x288, 320x240, 240x160, 176x144]
那应该做的工作。但是,将表单放在锚标记中并不是一种好习惯。