Php 使用AJAX提交带有输入数组的表单无效

Php 使用AJAX提交带有输入数组的表单无效,php,jquery,ajax,Php,Jquery,Ajax,单击处理程序 $('.to-pay').click(function(e) { var finputs=$('form.inputs-form').serialize(); alert(finputs); $.ajax( { url: "URL_HERE", type:"POST", data: finputs, success: function(data) { $('.another-d

单击处理程序

$('.to-pay').click(function(e)
{
   var finputs=$('form.inputs-form').serialize();
   alert(finputs);
   $.ajax(
   {
       url: "URL_HERE",
       type:"POST",
       data: finputs,
       success: function(data)
       {
      $('.another-div').html(data);
       }
   });
});
PHP部分

$pid=$_POST['pid'];
$size=$_POST['product-size'];
$quantity=$_POST['quantity'];


foreach($pid as $key => $prod_id)
{
  echo "This part is called";
  echo $prod_id." of size ".$size[$key]." ".$quantity[$key]." numbers.";
}
问题出在PHP方面。未执行
foreach()
部分。在jQuery端,我使用
alert()
进行了检查,数据如下所示:

pid%5B%5D=1和产品尺寸%5B%5D=100和数量%5B%5D=10和pid%5B%5D=2和产品尺寸%5B%5D=150和数量%5B%5D=20

PHP方面有什么问题吗?

伙计, 您得到的警报是一个字符串

.serialize() 描述:将一组表单元素编码为字符串以供提交

解决方案: 改为使用.serializeArray()

参考此

然后在php端相应地更改代码


在PHP端分解$_POST['data'],使其成为一个PHP数组,然后使用foreach迭代该数组

$pid=$_POST['pid'];
$size=$_POST['product-size'];
$quantity=$_POST['quantity'];

$i = 0;
foreach($pid as $prod_id)
{
  echo "This part is called";
  echo $prod_id." of size ".$size[$i]." ".$quantity[$i]." numbers.";
$i++
}

在PHP方面,print_r($_POST)的输出是什么?注意:未定义索引:第2行URL页面中的pid注意:未定义索引:第3行URL页面中的产品大小注意:未定义索引:第4行URL页面中的数量数组([pid]=>Array([0]=>100000[1]=>100001[2]=>100000)[quantity]=>Array([0]=>1[1]=>1[2]=>1)[产品大小]=>Array([0]=>500g[1]=>500g[2]=>1000 g)警告:为第8行第u页URL中的foreach()提供的参数无效警报看起来像是数组参数的正确URL编码
pid%5B%5D
pid[]
serializeArray()
的编码百分比也对我没有帮助Sam。仍然是相同的问题。@SuryaS,根据您的通知:未定义索引:第2行第1页URL中的pid通知:未定义索引:第3行第1页URL中的产品大小通知:未定义索引:第4行第1页URL中的数量,因为您应该这样做$pid=$POST['data']['pid']$大小=$发布['data']['product-size']$数量=$_POST['data']['quantity'];当您以key作为数据从jquery传递时:finputs,
$pid=$_POST['pid'];
$size=$_POST['product-size'];
$quantity=$_POST['quantity'];

$i = 0;
foreach($pid as $prod_id)
{
  echo "This part is called";
  echo $prod_id." of size ".$size[$i]." ".$quantity[$i]." numbers.";
$i++
}