0

0

json 和PHP的编码转换问题

不言

不言

发布时间:2018-04-23 11:41:24

|

1596人浏览过

|

来源于php中文网

原创

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



※前提: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 从前台接收程序,并直接从后台返回前台

MVM mall 网上购物系统
MVM mall 网上购物系统

采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压

下载
$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编码转换乱码如何解决

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.3万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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