Php jquery访问值在每个

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

我有一个foreach,它生成了许多输入框,这些输入框包含许多属性,比如id、数量、颜色。现在,我希望用户能够通过一个按钮更新foreach中所有项目的输入数量。我曾尝试使用(函数(index,item)循环遍历foreach中的项数,并通过ajax发布值

    <?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();  
          }
        });

           });

    });