在当前的互联网技术中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON格式广泛用于网络数据交换,特别是在前后端分离开发模式下,前端JavaScript与后端PHP的数据交换几乎都使用JSON格式。而跨域调用(CORS,Cross-Origin Resource Sharing)是一个浏览器安全特性,它限制了网页上的脚本如何能与不同域的服务器进行交互。 ### JSON格式 JSON格式分为两种结构,一种是对象(Object),另一种是数组(Array)。在JavaScript中,对象用花括号 `{}` 表示,数组用方括号 `[]` 表示。对象由属性(Property)组成,每个属性由键(Key)和值(Value)对组成,其中值可以是简单的值,如数字、字符串等,也可以是复杂的数据结构,如数组或另一个对象。数组则包含有序的元素列表,可以包含任意的数据类型。 在PHP中,通常使用关联数组(associative array)来表示JSON对象。通过`json_encode()`函数可以将PHP数组转换成JSON字符串,这是将PHP数据结构发送给前端JavaScript的一种便捷方式。相应地,PHP提供了`json_decode()`函数来将JSON字符串解析成PHP数组,从而在PHP后端处理前端发送过来的数据。 ### JavaScript中的JSON 在JavaScript中,可以创建JSON对象和数组,并使用点符号(`.`)或方括号(`[]`)来访问对象的属性。在提供的示例代码中: ```javascript function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage':'24'}]; alert(json[1].username); // 弹出 "candy" var json2 = [['crystal','20'],['candy','24']]; alert(json2[0][0]); // 弹出 "crystal" } ``` 这段代码展示了如何创建和操作JSON对象和数组。`json[1].username` 访问了第二个JSON对象的`username`属性,而`json2[0][0]`则访问了第一个数组元素的第一个元素。在JSON中,`json` 是一个对象数组,而`json2` 是一个数组的数组,但它们都可以被用于类似的用途。 ### PHP中的JSON 在PHP中,JSON的使用与JavaScript类似,但操作方式略有不同。我们需要构建一个PHP数组,然后使用`json_encode()`函数将其转换为JSON字符串: ```php $arr = array( array( 'catid' => '4', 'catname' => '程程', 'meta_title' => '程程博客' ), array( 'catid' => '6', 'catname' => 'climber', 'meta_title' => '攀登者' ) ); $jsonstr = json_encode($arr); echo $jsonstr; ``` 在这段PHP代码中,我们创建了一个二维数组`$arr`,并使用`json_encode()`将其转换为JSON格式的字符串。这样,前端JavaScript就可以接收并解析这个JSON字符串了。 ### 跨域调用(CORS) 跨域调用是浏览器同源策略的一种例外,允许一个域(源)上的Web应用访问另一个域的资源。在前面提供的代码中,实现跨域调用的方式是通过PHP动态生成JSON数据,并在HTML页面中通过`<script>`标签引用PHP脚本的方式。具体操作如下: ```html <SCRIPT type="text/javascript" src="php_json.php"></SCRIPT> <SCRIPT language="javascript" type="text/javascript"> function loadjson(_json) { if(_json) { for(var i = 0; i < _json.length; i++) { alert(_json[i].catname); } } } loadjson(jsonstr); </SCRIPT> ``` 在这段HTML代码中,我们首先通过`<script>`标签引入了`php_json.php`文件。该文件输出了JSON格式的数据。然后,在`loadjson`函数中,我们能够访问这些数据,并使用`alert`函数弹出每一个对象的`catname`属性。由于`php_json.php`文件返回的JSON数据被嵌入到了另一个域的HTML文件中,这就实现了跨域调用。 要实现CORS,通常需要在服务器端设置HTTP响应头,允许特定的域访问资源。在PHP服务器端,你可以在响应中添加如下头部: ```php header('Access-Control-Allow-Origin: *'); // 允许所有域名访问 header('Content-Type: application/json'); ``` 这里的`Access-Control-Allow-Origin: *`告诉浏览器允许所有域的页面来访问这个资源,出于安全考虑,生产环境中建议将其替换为特定的域名而非`*`。另外,`Content-Type: application/json`则声明了响应的内容类型为JSON,这也是必需的CORS响应头之一。 JSON作为前后端数据交换的桥梁,为Web应用提供了强大而简洁的数据交互方式。而跨域调用技术的实现,让不同的Web应用可以安全地共享资源,这在现代化的Web开发中扮演着至关重要的角色。
- 粉丝: 5
- 资源: 915
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 项目采用YOLO V4算法模型进行目标检测,使用Deep SORT目标跟踪算法 .zip
- 针对实时视频流和静态图像实现的对象检测和跟踪算法 .zip
- 部署 yolox 算法使用 deepstream.zip
- 基于webmagic、springboot和mybatis的MagicToe Java爬虫设计源码
- 通过实时流协议 (RTSP) 使用 Yolo、OpenCV 和 Python 进行深度学习的对象检测.zip
- 基于Python和HTML的tb商品列表查询分析设计源码
- 基于国民技术RT-THREAD的MULTInstrument多功能电子测量仪器设计源码
- 基于Java技术的网络报修平台后端设计源码
- 基于Python的美食杰中华菜系数据挖掘与分析设计源码
- 基于Java与JavaScript混合技术的吉森摄影项目设计源码