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++
}