Php jquery访问值在每个
我有一个foreach,它生成了许多输入框,这些输入框包含许多属性,比如id、数量、颜色。现在,我希望用户能够通过一个按钮更新foreach中所有项目的输入数量。我曾尝试使用(函数(index,item)循环遍历foreach中的项数,并通过ajax发布值Php jquery访问值在每个,php,jquery,ajax,Php,Jquery,Ajax,我有一个foreach,它生成了许多输入框,这些输入框包含许多属性,比如id、数量、颜色。现在,我希望用户能够通过一个按钮更新foreach中所有项目的输入数量。我曾尝试使用(函数(index,item)循环遍历foreach中的项数,并通过ajax发布值 <?php foreach ($allItems as $id => $items) { foreach ($items as $item) { echo' <tr cla
<?php
foreach ($allItems as $id => $items) {
foreach ($items as $item) {
echo'
<tr class="table_row thisismyclass">
<input class="quantity" type="number" name="quantity" value="'.$item['quantity'].'" data-id="'.$id.'" data-size="'.((isset($item['attributes']['size'])) ? $item['attributes']['size'] : '').'" data-price="'.((isset($item['attributes']['price'])) ? $item['attributes']['price'] : '').'"></tr>';
}}
?>
您应该尝试这样做:单击按钮,遍历每一行,获得一个数据值数组,然后在一个请求中将所有数据发送到服务器:
$('.btn updatefull')。在('click',function()上{
var id=[];
变量数量=[];
变量大小=[];
var价格=[];
var action='update';
$(“.thisismyclass”)。每个(函数(索引,项){
var行=$(此);
var input=row.find('input.quantity');
id.push(输入数据('id'));
推送数量(input.val());
size.push(input.data('size'));
price.push(输入数据('price'));
});
$.ajax({
方法:“post”,
url:'mycart.php',
数据:{
id:id,
价格:价格,
尺寸:尺寸,
行动:行动,
数量:数量
},
成功:函数(数据){}
});
});
我觉得问题源于这一行:var$btn=$(this);
此时的this按钮不会被单击。因为您在each()中
在类thisismyclass
中找到的元素中,this
将在每个tr行迭代时引用每个tr行。此外,您生成的标记似乎无效。看起来您正在尝试创建一个tr
,后面是一个嵌套的输入,但是需要一行中的内容存在于td或th或tr元素的预期子元素中。为什么要生成多个ajax调用?为什么不为每个“产品”发送一个数组?啊,我刚刚缩短了代码,它确实有效。我可以在我的控制台中看到mycart.php被生成为每个的项目数。只是不知道如何从tr1、tr2、tr3中获取值……每个中的this
是tr,输入是该tr的子项。$('.quantity',this)
将在您当前迭代的tr中找到数量。
<?php
echo'
</div><div class="btn-updatefull">Update Cart</div>';
?>
$('.btn-updatefull').on('click', function(){
$(".thisismyclass").each(function(index,item) {
var $btn = $(this);
var id = $btn.parent().parent().find('.data-id').val();
var qty = $btn.parent().parent().find('.quantity').val();
var size = $btn.parent().parent().find('.data-size').val();
var price = $btn.parent().parent().find('.data-price').val();
var action = 'update';
$.ajax ({
method: 'post',
url: 'mycart.php',
data: {
id: id,
price:price,
size:size,
action:action,
qty:qty
},
success: function(data) {
// location.reload();
}
});
});
});