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

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

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


所以我想到了一个方法:


image.png


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


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


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

functionarrToJSON(arr) {

    varjson = {};

    for(varinarr) {

        varvo=arr[i];

        if(typeofarr[i] == "object") {

            json[i]={};

            json[i] = arrToJSON(vo);

        else{

            json[i] =vo;

        }

    }

    returnJSON.stringify(json);

}

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


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


第二步 :


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


如图image.png


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


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


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

/**

 * 解析前台传来的不完整json字符串

 */

privatefunctionjson_decode_x($str)

{

    $data_arrarray();

    $arr= json_decode($str, 1);

    foreach($arras$x=> $a) {

        if(preg_match('/":/'$arr[$x])) { //匹配

            $data_arr[$x] = $this->json_decode_x($a);

        else{

            $data_arr[$x] = $a;

        }

    }

    return$data_arr;

}


这样的话,后台接收到json字符串,用这个函数解析,就可以得到完整正确的多维数组了


由于我的业务需求,是没有/" 这样的字符串的,所以可以用这个来判断子字符串是否还有json字符串可以解析,如果用到实际上项目,请修改该正则判断


当然有能力的人可以直接第一步改成完整的json字符串,这样后台可以直接用一个json_decode解析


目录
相关文章
|
3月前
|
PHP C++ 索引
PHP 高效之道:字符串与数组处理的实用技巧
PHP 高效之道:字符串与数组处理的实用技巧
197 83
|
4月前
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
4月前
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
4月前
|
大数据 数据处理 PHP
PHP中的数组过滤与映射:高效数据处理技巧
PHP中的数组过滤与映射:高效数据处理技巧
|
3月前
|
存储 JSON PHP
PHP数组键值转换的隐秘陷阱:整数还是字符串?
PHP数组键值转换的隐秘陷阱:整数还是字符串?
154 58
|
3月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
121 8
|
3月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
N..
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
145 1
|
XML 前端开发 JavaScript
jQuery中ajax如何使用
jQuery中ajax如何使用
193 0
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
132 0
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]

热门文章

最新文章

下一篇
oss教程