Django--Ajax
  • Json

什么是json,JSON(JavaScript Object Notation,js对象标记)是一种轻量级的数据交换的格式,它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简介和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效的提高网络的传输效率。

  • json对象,js对象

常见的json对象。
#以下的json对象为合格的json对象
["one", "two", "three"]{ "one": 1, "two": 2, "three": 3 }{"names": ["张三", "李四"] }[ { "name": "张三"}, {"name": "李四"} ] #以下的json对象是不合格的,希望大家以后注意
{ name: "张三", 'age': 32 }     #属性名必须使用双引号[32, 64, 128, 0xFFF]  # 不能使用十六进制值{ "name": "张三", "age": undefined }            #不能使用undefined{ "name": "张三","birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),"getName":  function() {return this.name;}   #不能使用函数和日期对象
}  
22
22

1
#以下的json对象为合格的json对象

2
["one", "two", "three"]

3
4
{ "one": 1, "two": 2, "three": 3 }

5
6
{"names": ["张三", "李四"] }

7
8
[ { "name": "张三"}, {"name": "李四"} ] 

9
10
#以下的json对象是不合格的,希望大家以后注意

11
{ name: "张三", 'age': 32 }     

12
13
#属性名必须使用双引号

14
15
[32, 64, 128, 0xFFF]  # 不能使用十六进制值

16
17
{ "name": "张三", "age": undefined }            #不能使用undefined

18
19
{ "name": "张三",

20
  "birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),

21
  "getName":  function() {return this.name;}   #不能使用函数和日期对象

22
}  

  • 数据交换的格式

JSON只是js的自己

json之人双引号
json一定是一个字符串
  • stringify与parse方法
JSON.parse # 将一个json字符串转换为JavaScript 相当于Python里的json方法的loads方法。
console.log(JSON.parse('{"name":"Hello"}')JSON。stringify():# 用于将JavaScript值转化为Json字符串,相当于Python中json的dumps方法。
console.log(JSON.stringify({'name':'Hello'})
5
5

1
JSON.parse # 将一个json字符串转换为JavaScript 相当于Python里的json方法的loads方法。

2
console.log(JSON.parse('{"name":"Hello"}')

3
4
JSON。stringify():# 用于将JavaScript值转化为Json字符串,相当于Python中json的dumps方法。

5
console.log(JSON.stringify({'name':'Hello'})

  • 前端与后台传输数据的方法
GET:    
通过地址栏传输数据
通过a标签传输
通过form表单
POST:
通过form表单
  • json和xml做数据比对
#JSON格式有俩个显著的有点:书写简单,一目了然;符合了JavaScript原生复发,可以由解释引擎直接处理,不用应哇天津爱解析代码。所以,json迅速被接受,已经成为各大网站交换数据的标准格式。
#XML和JSON都使用结构化方法来标记数据。#XML和JSON比较
#XML表示中国不封省市的数据
<?xml version="1.0" encoding="utf-8"?>
<country><name>中国</name><province><name>黑龙江</name><cities><city>哈尔滨</city><city>大庆</city></cities></province><province><name>广东</name><cities><city>广州</city><city>深圳</city><city>珠海</city></cities></province><province><name>台湾</name><cities><city>台北</city><city>高雄</city></cities></province><province><name>新疆</name><cities><city>乌鲁木齐</city></cities></province>
</country>#用JSON表示中国部分省市
{"name": "中国","province": [{"name": "黑龙江","cities": {"city": ["哈尔滨", "大庆"]}}, {"name": "广东","cities": {"city": ["广州", "深圳", "珠海"]}}, {"name": "台湾","cities": {"city": ["台北", "高雄"]}}, {"name": "新疆","cities": {"city": ["乌鲁木齐"]}}]
}#可以看到,JSON的见得语法格式和清晰的层次结构要比XML容易阅读,并且在数据交换方面,由于JSON所使用的字符要比XML少的多,可以大大的节约传输数据所占用的宽带。
#注意:JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中
68
68

1
#JSON格式有俩个显著的有点:书写简单,一目了然;符合了JavaScript原生复发,可以由解释引擎直接处理,不用应哇天津爱解析代码。所以,json迅速被接受,已经成为各大网站交换数据的标准格式。

2
#XML和JSON都使用结构化方法来标记数据。

3
4
#XML和JSON比较

5
#XML表示中国不封省市的数据

6
<?xml version="1.0" encoding="utf-8"?>

7
<country>

8
    <name>中国</name>

9
    <province>

10
        <name>黑龙江</name>

11
        <cities>

12
            <city>哈尔滨</city>

13
            <city>大庆</city>

14
        </cities>

15
    </province>

16
    <province>

17
        <name>广东</name>

18
        <cities>

19
            <city>广州</city>

20
            <city>深圳</city>

21
            <city>珠海</city>

22
        </cities>

23
    </province>

24
    <province>

25
        <name>台湾</name>

26
        <cities>

27
            <city>台北</city>

28
            <city>高雄</city>

29
        </cities>

30
    </province>

31
    <province>

32
        <name>新疆</name>

33
        <cities>

34
            <city>乌鲁木齐</city>

35
        </cities>

36
    </province>

37
</country>

38
39
#用JSON表示中国部分省市

40
{

41
    "name": "中国",

42
    "province": [{

43
        "name": "黑龙江",

44
        "cities": {

45
            "city": ["哈尔滨", "大庆"]

46
        }

47
    }, {

48
        "name": "广东",

49
        "cities": {

50
            "city": ["广州", "深圳", "珠海"]

51
        }

52
    }, {

53
        "name": "台湾",

54
        "cities": {

55
            "city": ["台北", "高雄"]

56
        }

57
    }, {

58
        "name": "新疆",

59
        "cities": {

60
            "city": ["乌鲁木齐"]

61
        }

62
    }]

63
}

64
65
66
67
#可以看到,JSON的见得语法格式和清晰的层次结构要比XML容易阅读,并且在数据交换方面,由于JSON所使用的字符要比XML少的多,可以大大的节约传输数据所占用的宽带。

68
#注意:JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中

AJAX简介
#AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。# *同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
# *异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
#AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
5
5

1
#AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。

2
3
# *同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

4
# *异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

5
#AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

  • AJAX常见的应用场景
当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为lemontree7777777的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。整个过程中页面没有刷新,只是局部刷新了;
在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作;
4
4

1
当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为lemontree7777777的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。

2
3
整个过程中页面没有刷新,只是局部刷新了;

4
在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作;

  • ajax的优缺点
#优点
AJAX使用Javascript技术向服务器发送异步请求;AJAX无须刷新整个页面;因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高;
6
6

1
#优点

2
AJAX使用Javascript技术向服务器发送异步请求;

3
4
AJAX无须刷新整个页面;

5
6
因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高;

  • ajax的参数
url:要求为string类型的参数,(默认为当前页面地址)发送请求的地址。
type:要求为string类型的参数,请求方式为POST或者为GET请求,默认是GET请求
data:要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。(1)由服务器返回,并根据dataType参数进行处理后的数据。(2)描述状态的字符串。function(data, textStatus){//data可能是xmlDoc、jsonObj、html、text等等this;  //调用本次ajax请求时传递的options参数error:要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。
x
8

1
url:要求为string类型的参数,(默认为当前页面地址)发送请求的地址。

2
type:要求为string类型的参数,请求方式为POST或者为GET请求,默认是GET请求

3
data:要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

4
success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。(1)由服务器返回,并根据dataType参数进行处理后的数据。(2)描述状态的字符串。function(data, textStatus){//data可能是xmlDoc、jsonObj、html、text等等this;  //调用本次ajax请求时传递的options参数error:要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。

实例一:
前端代码:
<!DOCTYPE html>
<html lang="en">
<head><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
</head>
<body>
<input type="text" class="first"><span>+</span>
<input type="text" class="second"><span>=</span>
<input type="text" class="result" value="">
<button class="btn-info btn count">计算</button>
<span class="hint"></span><script src="/static/jquery-3.2.1.min.js"></script>
<script>$(".count").click(function () {$.ajax({url:"/count_home/",type:"GET",data:JSON.stringify({first_num:$(".first").val(),second_num:$(".second").val()}),contenType:"application/json",success:function (data) {$(".result").val(data),$(".hint").html("计算完成")}})})
</script>
</body>
</html>
1
前端代码:

2
<!DOCTYPE html>

3
<html lang="en">

4
<head>

5
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

6
    <meta name="viewport" content="width=device-width, initial-scale=1">

7
    <meta charset="UTF-8">

8
    <title>Title</title>

9
    <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">

10
</head>

11
<body>

12
<input type="text" class="first"><span>+</span>

13
<input type="text" class="second"><span>=</span>

14
<input type="text" class="result" value="">

15
<button class="btn-info btn count">计算</button>

16
<span class="hint"></span>

17
18
<script src="/static/jquery-3.2.1.min.js"></script>

19
<script>

20
    $(".count").click(function () {

21
       $.ajax({

22
        url:"/count_home/",

23
        type:"GET",

24
         data:JSON.stringify({

25
            first_num:$(".first").val(),

26
            second_num:$(".second").val()

27
           }),

28
           contenType:"application/json",

29
           success:function (data) {

30
               $(".result").val(data),

31
               $(".hint").html("计算完成")

32
           }

33
           }

34
       )

35
    })

36
</script>

37
</body>

38
</html>

#后台代码def home_ajax(request):return render(request,"home_ajax.html")def count_home(request):print(request.GET,'******')for item in request.GET:first_num = eval(item).get('first_num')second_num = eval(item).get('second_num')data = int(first_num)+int(second_num)return HttpResponse(data)
15
1
#后台代码

2
3
def home_ajax(request):

4
    return render(request,"home_ajax.html")

5
6
7
def count_home(request):

8
9
    print(request.GET,'******')

10
    for item in request.GET:

11
        first_num = eval(item).get('first_num')

12
        second_num = eval(item).get('second_num')

13
        data = int(first_num)+int(second_num)

14
        return HttpResponse(data)

15
16
    

17
    

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/De-Luffy/p/7831802.html

2017-11-14相关推荐

  1. #UnityTips# 2017.11.14

    hi,all.最近比较忙,所以更新也比较慢了. 今天就来和大家分享一个小Tip,它是关于UGUI的坑的. 使用过UGUI的朋友们都知道,Canvas的渲染方式有三种: Screen Space Ove ...

  2. 小学计算机室均衡解说词,迎接县均衡化国家验收学校解说词(2017.11.14)

    迎接县均衡化国家验收学校解说词 办学条件组 尊敬的各位专家.各位领导: 欢迎莅临我校检查指导工作.我们宁津县第二实验小学始建于1997年,是一所县属非寄宿完全小学.当时只有北面这一座楼,29名教师.2 ...

  3. 第26次Scrum会议(11/14)【欢迎来怼】

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min. 地 ...

  4. 支持 C++11/14/17 功能(现代 C++

    支持 C++11/14/17 功能(现代 C++) 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档. 本文描述了 Vis ...

  5. 2017无盘服务器,(2017.11.19)云更新2017正式版2017.6.15.6596无盘xp-win7x32-x64-win10x64公包...

    重要更新: 一.重点功能更新 1.三层更新核心组件升级,降低80%的游戏更新量 : 2.新增显卡PNP功能 (新环境部署更简单): 3.同时支持中英双语言环境 (更高Bigger): 4.优化万兆环境 ...

  6. 日常总结2017/11/4

    .LOG /********************************************************************************************** ...

  7. Xamarin 2017.11.9更新

     Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...

  8. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

  9. VS2010-2015对C++11/14/17特性的支持

    VS2010-2015对C++11/14/17特性的支持 C++11 功能列表 Visual C++ 实现了 C++11 核心语言规范 中的绝大多数功能.许多 C++14 库功能和某些为 C++17 ...

  10. Test on 11/14/2016

    @kaike 第一题太简单我不想说什么 来说第二题. 1.小x的旅行   (travel.pas/c/cpp) [问题描述] 小x大学毕业后,进入了某个公司做了高层管理,他每年的任务就是检查这个公司在 ...

最新文章

  1. 五大分布式事务,你了解多少?
  2. php 头部utf8,PHP去掉utf8格式文件中的bom头部_PHP教程
  3. sys.stdout sys.stderr的用法
  4. redis取出list最边的一个_这几个Redis使用技巧,让你的程序快如闪电
  5. 组织配置java项目的外部lib包
  6. 正确获取Java事件通知
  7. python itertools卡死_Python使用itertools模块来解决算法问题,python
  8. python机器学习案例系列教程——推荐系统
  9. 计算机408重点知识及其他(面试)
  10. java中点击按钮读取和写入文件实现登录和注册
  11. 微信原版提示音_抖音阿豆微信提示音修改app-抖音很火的微信提示音阿豆铃声软件v1.0...
  12. 新体制SAR——BiDi SAR
  13. 基于SSM的在线点餐系统的设计与实现
  14. 无线降噪耳机哪个品牌好?2021年无线降噪耳机排行榜
  15. uni-app animation动画
  16. Python挑战游戏( PythonChallenge)闯关之路Level 0
  17. 如何通过线性回归预测股票价格?
  18. 解决XWPFRun的addPicture方法无法显示图片的问题
  19. verilog写的一个简洁实用的PWM模块
  20. 你一定要知道的71个做饭技巧

热门文章

  1. 2021-08-3116. 最接近的三数之和 排序+双指针
  2. 363.矩形区域不超过K的最大数值和
  3. arduino的esp32程序无法上传_【arduino】arudino开发ESP32 SPIFFS文件上传方法
  4. BAT[阿里、百度、腾讯]等互联网公司数据结构面试题(一) python分析实现
  5. 杭电HDUacm2037
  6. Machine Learning Books List
  7. 《Web漏洞防护》读书笔记——第5章,数据安全
  8. 浮窗 动画特效 android,悬浮窗能实现自定Animation动画效果吗?
  9. java 从_java-从查询字符串中过滤参数(使用番石榴?...
  10. 小程序UI库 iView Weapp