Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DOM操作-多表单_Php_Jquery_Ajax - Fatal编程技术网

Php DOM操作-多表单

Php DOM操作-多表单,php,jquery,ajax,Php,Jquery,Ajax,我的页面上有几个表单(通过循环),每个表单都有自己的提交按钮。 我想使用AJAX获取数据并将其发布到a.php。我需要知道提交了哪个表单,以便获得相应的值 这是一个简单的购物车应用程序。此表单允许用户在结帐前更改购物车中项目的数量。 您可以看到有两个“更改数量”按钮(sumbit按钮),这两个字段被包装在一个表单标记中 包围表单的循环是: while ($row = $query->fetch_assoc()) { $item_code = $row['product_id'];

我的页面上有几个表单(通过循环),每个表单都有自己的提交按钮。 我想使用AJAX获取数据并将其发布到a.php。我需要知道提交了哪个表单,以便获得相应的值

这是一个简单的购物车应用程序。此表单允许用户在结帐前更改购物车中项目的数量。

您可以看到有两个“更改数量”按钮(sumbit按钮),这两个字段被包装在一个表单标记中

包围表单的循环是:

while ($row = $query->fetch_assoc()) {
  $item_code = $row['product_id'];
  $item_name = $row['name'];
  $item_price = $row['price'];
  $item_qty = $row['qty'];
  print"<tr>
  <td>
    <img src='http://localhost/store/images/products/$item_code.jpg'>
  </td>
  <td>$item_code</td>1
  <td>$item_name</td>
  <td>$$item_price</td>
  <td>
    <form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='form_id_$item_code'>
      <input type='text' maxlength='2' value='$item_qty' id='qty'>
      <input type='hidden' value = '$item_code' name='product_id' id='product_id'>
      <div><input type='submit' id='submit' value='Change Quantity'></div>
    </form>
  </td>
  <td>x</td>
  </tr>";
}

您可以使用另一个隐藏的输入字段,该字段包含该特殊表单的标识符。我认为这是最简单的方法。

您可以只使用“产品id”,因为它对每个项目都应该是唯一的

<input type='hidden' value = '$item_code' name='product_id' id='product_id'>

也可以向表单标记添加唯一的ID属性

<form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='item_$item_code'>
$('form#item_3')

$(‘表格#第3项’)
您可以向行中添加唯一的id,以便以后可以对其进行操作,并可以稍后访问表单

<tr id="row_$item_code">
$('tr#row_3 form')

$('tr#第3行表格')
您可以向表单中添加“数据”属性

<form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='item_$item_code' data-form_id="$item_code">
var form_id = $('form#item_3').data('form_id');

var form#u id=$('form#item_3')。数据('form#id');

我们可以看到您当前使用的jQuery代码吗?

。。。然后使用$(this)得到子项,然后eq(x)x一,我会知道,它是第三个(取决于我放置隐藏字段的位置),然后得到它的attr()或者val()。。嗯,好主意,伙计。我喜欢这个主意,和下面的一样。然后我可以使用简单的dom方法,比如children和eq()来获取每个输入的值。。我来试试这个。。谢谢我已经包含了基于您的答案使用的jQuery代码。。。看看我做得是否正确?我觉得这很正常,通过添加实际的项目id,尝试使每个输入id唯一,在同一页上不能有多个元素具有相同的id
$('input[type=submit]')。单击(function(){var allFormInputs=$(this)。最近的('form')。查找('input');})
form find('input'))
@基本相同的终端。我想要特定的输入标签(第一个和第二个)。您的代码将列出所有输入。这就是为什么我加入了eq()。我喜欢这个选择器,并认为它会有所帮助。如果你想要一个特定的输入,为什么不用一个你可以选择的类或名称来回显它们,这样你就不用担心在将来某个日期重新排序了?@Terminus正是我所想的。。如果我重新订购这些输入怎么办?我知道这个jQuery代码不是很“动态”。。好主意!这应该是正确的id选择器:
#form_id_uu'+form_id
。如果你给输入一个类,你甚至不需要使用children和eq。删除id='qty',因为它不是唯一的
<form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='item_$item_code' data-form_id="$item_code">
var form_id = $('form#item_3').data('form_id');