• 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进行通信时,两边都不需要序列化和反序列化操作
  • 相关阅读:
    初识ACM——幸好不用排序
    初识ACM——中文的信仰
    初识ACM——中文的信仰
    初识ACM——九九乘法表
    初识ACM——九九乘法表
    JavaScript 10 作用域
    JavaScript 09 简单的加法计算器
    JavaScript 08 函数
    JavaScript 07 类型转换
    JavaScript 06 基本数据类型
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11619967.html
Copyright © 2020-2023  润新知