AJAX
JSON简述
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言
- JSON 具有自我描述性,更易理解
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
使用json对象应注意的问题:
- 字典内属性名必须加引号
- 元素不能使用十六进制
- 不能使用undefined
- 不能使用函数和日期对象
stringify与parse方法
JavaScript中关于JSON对象和字符串转换的两个方法:
JSON.parse(): 用于将一个 JSON 字符串转换为 JavaScript 对象
JSON.parse('{"name":"alex"}');
JSON.parse('{name:"alex"}') ; // 错误
JSON.parse('[18,undefined]') ; // 错误
JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。
JSON.stringify({"name":"alex"})
和XML的比较
JSON 格式有两个显著的优点:一是书写简单,结构清晰;二是符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。
AJAX简介
Asynchronous Javascript And XML,直译的意思是“异步的Javascript和XML”,即使用Javascript语言与服务器进行异步交互,传输的数据为XML(传输的数据不只是XML)。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容(局部完成请求和响应过程)。
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
- 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
- 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
AJAX常见应用情景
常见应用:
- 搜索引擎根据用户输入的关键字,自动提示检索关键字
- 用户注册时的用户名的查重
当文件框发生了输入变化时,使用ajax技术向服务器发送一个请求,然后服务器会把查询到的结果响应给浏览器,最后再把后端返回的结果展示出来。
看中的特点是:
- 整个过程中页面没有刷新,只是刷新页面中的局部位置
- 当请求发出后,浏览器还可以进行其他操作,无需等待服务器的响应
AJAX的优缺点
优点:
- AJAX使用JavaScript技术向服务器发送异步请求;
- AJAX请求无须刷新整个页面;
- 因为服务器响应内容不再是整个页面,而是页面中的部分内容,所以AJAX性能高;
缺点:
- 摈弃了back和history 功能,违背了浏览器的功能
- 安全性降低,能够暴露更多的数据和服务器逻辑
- 对搜索引擎支持比较弱,使用不当会增加网络流量,降低系统性能
- 许多手持设备并不支持ajax
Ajax与JSON
Ajax与后端进行数据更新使用json传递,服务器端生成符合json语法格式的字符串,
发送给客户端,客户端再将该字符串转换成javascript对象。
具体而言,jdango中视图函数与ajax进行数据交换时,使用的是JsonResponse
,使用时需要导入以下模块from django.http import JsonResponse
【拓展】JsonResponse与HttpResponse的区别
HttpResponse
- Content-Type为
text/html
,当然它还支持很多的属性 - 与ajax进行通信时,HttpResponse设置
content_type
属性为'application/json',并且返回的数据要dumps成json字符串
JsonResponse
- JsonResponse是HttpResponse的一个子类
- Content-Type为
application/json
- 默认情况下,只能传输字典类型的数据,如果要传输其他类型的数据时,需要添加
safe=True
,没有该参数时,会报TypeError的异常 - 与ajax进行通信时,两边都不需要序列化和反序列化操作