json 和PHP的编码转换问题

不言
发布: 2018-04-23 11:41:24
原创
1588人浏览过

这篇文章主要介绍了json 和PHP的编码转换问题,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

<br/>
登录后复制
<br/>
登录后复制

※前提:json与php分别在前后台 相互传递数据时可能出现的数据转换情况处理(主要针对数组):

☆前台代码:

var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
登录后复制
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
登录后复制
$.ajax({
               type:"post",
                url:url,
                data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据
                success:function(res){
                   
   
                    console.log(res);
                    
                }
            });
登录后复制

☆后台代码(只传递字符串时):

map = $_POST['arr'];
            
 $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name 
 echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出
登录后复制


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;

问题


立即学习PHP免费学习笔记(深入)”;

关于php和json传递数组的情况,从后台传数据到前台有两种方法:echo,ajaxreturn


$1  第一种方法:

echo ,需要自行进行encode 编码后输出json 字符串

这时,有两种情况,一种是返回从前台接收过来的json字符串,一种是后台创建新的数组,并且返回前台。

$1.1 后台接收前台数据,并将相同数据返回

$map = $_POST['arr'];//从前台传递过来的$map
$map = json_decode($map);//json对象 解码之后给php后台使用
.....
$map = json_encode($map);//对json数组进行编码生成json字符串
echo $map; //输出$map到前台
登录后复制

$1.2 后台创建程序,并且返回前台

$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码
echo $mapN;
登录后复制

$1.3 前台操作

res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组
console.log(res.name);
登录后复制

$2 第二种方法:

ajaxreturn,传递数组时不需要encode编码,默认传递的是就是json的字符串形式,但在前台需要eval进行转换,将json字符串转换成数组

这时,有两种情况,一种是返回从前台接收过来的json字符串,一种是后台创建新的数组,并且返回前台。

.1 从前台接收程序,并直接从后台返回前台

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online
$map = $_POST['arr'];
$map = json_decode($map);//json对象 解码之后
$this->ajaxReturn($map,'json');
登录后复制

$2.2 后台创建程序,并且返回前台

$mapN = array("name"=>"zhangwei");
$this->ajaxReturn($mapN,'json');// 此时不需要json_encode() ,前台通过mapN.name 或者mapN['name']输出
登录后复制

$2.3 前台操作

res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组
console.log(res.name);
登录后复制

$3 补充:

echo 和 ajaxreturn 在关于 从后台传递数据到前台的区别:

echo 不会替php数组编码成json传递式的格式——json字符串类型

ajaxreturn  会自动调用json_encode函数进行编码

二者相同的地方:

在传递json数值到前台之后都需要eval(“(”+res+“)”)进行转换成json数组,才可以使用

$4 注意:

这里后台 通过echo或者ajaxreturn都可以返回数据给前台的 success:function(res)

但是返回之后的数据使用方式不同:

一、字符串类型:后台通过echo,可以直接输出字符串到前台的res,

二、数组类型:不论是前台传过来的json的字符串类型数组类型,还是后台生成的数组类型,通过ajaxreturn的方式返回到前台的可以通过:数组名['keyname'] 或者  数组名.keyname 的方式调用

小tips:

一、在前台往后面传json的字符串(本身是数组,但在前台通过stringify转换成json字符串),在后台需要json_decode进行解码,转换成php可以使用的json数组, 调用方式  数组名->key

二、在后台创建的数组,若通过json_encode 转换成 json字符串,数据传到前台后,需要通过  res = eval("("+res+")"); 转换成json数组,  前台调用方式: 数组名['keyname'] 或者  数组名.keyname 

相关推荐:

php字符编码转换

php编码转换乱码如何解决

以上就是json 和PHP的编码转换问题的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号