Django与AJAX

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进行通信时,两边都不需要序列化和反序列化操作
原文地址:https://www.cnblogs.com/jjzz1234/p/11619967.html