PHP如何接收前端提交的二级数组

post提交二维数组,

    $.post(url, $("#orderForm").serialize(), function (data) {
        if (data.status == 0) {
            $('.tank-tishi-main-con-txt').html("保存成功" + msg);
            $('.tank-tishi-main').show();
            setInterval('window.order.reduce(' + state + ')', 1000);
        } else {
            layer.msg('保存存失败');
        }
    }, 'json');

抓包请求格式如下

skuList[0].goods_id: 1
skuList[0].color: 113_白色
skuList[0].goods_remark: 
skuList[0].21_M: 
skuList[0].22_L: 
skuList[0].23_XL: 
skuList[0].24_XXL: 
skuList[0].25_XXXL: 
skuList[0].26_4XL: 
skuList[0].27_SS: 
skuList[0].28_S: 
skuList[0].29_M: 
skuList[0].210_L: 
skuList[0].211_XL: 
skuList[0].212_XXL: 

php端用$_POST接收,打印结果为

Array
(
    [0] => 
)

无法接收数据,请问需要如何接收?

阅读 6.8k
3 个回答

问题不在php ,而在你的前端。

jQuery.js是支持多维数组的,其它库封装的ajax不一定支持。
但使用serialize()获取的应该是一个形如 a=33&b=44 这样的字符串,而a和b 对应form表单中的name,楼主把你的html部分的代码拿出来看看。

php端接收post数据也就两种方法:(楼主应该没有使用低版本的php吧?)

  1. $_POST
  2. $post=file_get_contents("php://input") 接收流形式的数据,比如 axios.js 默认的就需要用这种方式接收。

一般 jquery.js中的 ajax只需要使用 $_POST 就可以的。

如果不行,你应该是修改了默认的配置,那就用第二种方式试一下。

另外,我还是很感兴趣,楼主通过 serialize() 是怎样获得二维数组的?

新手上路,请多包涵

js拼接转json提交。

问题出在请求参数,将表单参数改成完全的数组接收OK

skuList[0][goods_id]: 1
skuList[0][color]: 113_白色
skuList[0][goods_remark]: 
.......
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题