扫码关注官方订阅号
问题: 对js对象和json的区别一直不是很清楚?使用框架通过AJAX向后台传值好像一直使用js对象,后台返回数据是json. 前端向后端传递数据的时候是框架帮我们进行了json的转换吗?
认证0级讲师
用JSON官网的表述,JSON( (JavaScript Object Notation))是JavaScript对象字面量的一个子集,是一种轻量的数据交换格式。
在接口调用过程中所说的json数据往往不是指js的对象,而是指的json字符串。在js向服务器提交json格式的数据,实质是将js的对象转换成json字符串再放在http请求中进行传递。当接收到服务端响应的json格式的数据时,接收到的也是json字符串,底层会将json字符串转换成js的对象以便操作。
其实json对象也是js对象的一种表现形式,或者说json是限定的js对象也行。说白了,无非就是把key用双引号括起来,value限定为数字、字符串、布尔值和NULL中的一种,再考虑下对象和数组嵌套情况的,比较特殊的js对象而已。所以转换什么的,框架顺便就弄了呗。
用PHP视角来看,JSON就是PHP里的关联数组,就是键值对.
echo json_encode(array( 'A', 'B' )); // ["A","B"] echo json_encode(array( 0 => 'A', 1 => 'B' )); // ["A","B"] echo json_encode(array( 0 => 'A', 2 => 'B' )); // {"0":"A","2":"B"}
前端jQuery AJAX传输JSON给后端PHP.
前端:
var arr = {Client:"jQuery",Server:"PHP"}; //键名没有用双引号包围 var str = JSON.stringify(arr); //对象转为字符串后键名被加上了双引号 console.log(str); //输出 {"Client":"jQuery","Server":"PHP"} var img = {}; $("img").each(function(index, ele){ //console.log("键:"+index+" 值:"+$(ele).attr('src')); img[index] = $(ele).attr('src'); }); console.log(img); //输出 { 0="//c1.mifile.cn/1.png", 1="//c1.mifile.cn/2.png"} $.post( "http://127.0.0.1/test.php", //url:发送请求地址 {name:"ele", pass:"123", json:arr}, //data:待发送的K:V参数 function(data){ //callback:发送成功时的回调函数 console.log(data); } );
后端:
<?php header('Content-Type: text/plain; charset=utf-8'); header('Access-Control-Allow-Origin: http://www.mi.com'); var_export($_POST); //json:arr时输出 array ( 'name' => 'ele', 'pass' => '123', 'json' => array ( 'Client' => 'jQuery', 'Server' => 'PHP', ), ) //json:str时输出 array ( 'name' => 'ele', 'pass' => '123', 'json' => '{"Client":"jQuery","Server":"PHP"}', ) //json:img时输出 array ( 'name' => 'ele', 'pass' => '123', 'json' => array ( 0 => '//c1.mifile.cn/1.png', 1 => '//c1.mifile.cn/2.png', ), )
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
用JSON官网的表述,JSON( (JavaScript Object Notation))是JavaScript对象字面量的一个子集,是一种轻量的数据交换格式。
在接口调用过程中所说的json数据往往不是指js的对象,而是指的json字符串。在js向服务器提交json格式的数据,实质是将js的对象转换成json字符串再放在http请求中进行传递。当接收到服务端响应的json格式的数据时,接收到的也是json字符串,底层会将json字符串转换成js的对象以便操作。
其实json对象也是js对象的一种表现形式,或者说json是限定的js对象也行。说白了,无非就是把key用双引号括起来,value限定为数字、字符串、布尔值和NULL中的一种,再考虑下对象和数组嵌套情况的,比较特殊的js对象而已。所以转换什么的,框架顺便就弄了呗。
用PHP视角来看,JSON就是PHP里的关联数组,就是键值对.
前端jQuery AJAX传输JSON给后端PHP.
前端:
后端: