相关文章推荐
温柔的上铺  ·  小白也能轻松看懂的MindMaster超简单 ...·  2 月前    · 
大力的充值卡  ·  中国人民大学孔子学院专职教师能力提升线上工作 ...·  1 年前    · 
闯红灯的牛肉面  ·  省科技厅厅长赵明来省地震局调研地震科技工作- ...·  1 年前    · 
留胡子的黄豆  ·  一步步实现Kriging程序(1)-CSDN博客·  1 年前    · 
含蓄的木耳  ·  国防科技大学·  1 年前    · 
Code  ›  ajax前端传多维数组到php后台,关联数组转json到后台方法开发者社区
ajax js json转字符串 js字符串转数组 关联数组
https://cloud.tencent.com/developer/article/1556326
安静的斑马
2 年前
作者头像
仙士可
0 篇文章

ajax前端传多维数组到php后台,关联数组转json到后台方法

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > 仙士可博客 > 正文

ajax前端传多维数组到php后台,关联数组转json到后台方法

发布 于 2019-12-19 14:03:43
1.1K 0
举报

很多人碰到过ajax传值时无法直接传数组,而百度的大多数都是不能用的

所以我想到了一个方法:

第一步:将数组转换为json字符串

这是一个技术性的问题,百度说的JSON.stringify(arr)是不能转换关联数组的,甚至索引数组也是有很多缺点

所以我特意封装了个js递归函数

function arrToJSON(arr) {
    var json = {};
    for (var i in arr) {
        var vo=arr[i];
        if (typeof arr[i] == "object") {
            json[i]={};
            json[i] = arrToJSON(vo);
        } else {
            json[i] =vo;
    return JSON.stringify(json);
}

只要传入js多维数组,能把数组全部解析为字符串

这样就可以在ajax里面传值啦~~~

第二步 :

但是这样转换成的json字符串是不完整的,不能直接解析出全部的数组

如图

可以发现,这个函数会将下级的子json字符串给用斜杠转义,越往下走斜杠越多,

当后台json_decode 处理第一层级时,第二层其实仍是json_decode字符串

所以后台需要一个新的decode函数用于解析这个json字符串

/**
 * 解析前台传来的不完整json字符串
private function json_decode_x($str)
    $data_arr = array();
    $arr = json_decode($str, 1);
    foreach ($arr as $x => $a) {
        if (preg_match('/":/', $arr[$x])) { //匹配
            $data_arr[$x] = $this->json_decode_x($a);
 
推荐文章
温柔的上铺  ·  小白也能轻松看懂的MindMaster超简单使用教程
2 月前
大力的充值卡  ·  中国人民大学孔子学院专职教师能力提升线上工作坊举办_孔子学工作院办公室
1 年前
闯红灯的牛肉面  ·  省科技厅厅长赵明来省地震局调研地震科技工作-安徽省地震局
1 年前
留胡子的黄豆  ·  一步步实现Kriging程序(1)-CSDN博客
1 年前
含蓄的木耳  ·  国防科技大学
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号