2017-11-14
- Json
什么是json,JSON(JavaScript Object Notation,js对象标记)是一种轻量级的数据交换的格式,它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简介和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效的提高网络的传输效率。
- json对象,js对象
#以下的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;} #不能使用函数和日期对象
}
#以下的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;} #不能使用函数和日期对象
}
- 数据交换的格式
JSON只是js的自己
- 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'})
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'})
- 前端与后台传输数据的方法
- 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数据很长的时候,我们会陷入繁琐复杂的数据节点查找中
#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数据很长的时候,我们会陷入繁琐复杂的数据节点查找中
#AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。# *同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
# *异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
#AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
#AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。
# *同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
# *异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
#AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
- AJAX常见的应用场景
当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为lemontree7777777的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。整个过程中页面没有刷新,只是局部刷新了;
在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作;
当输入用户名后,把光标移动到其他表单项上时,浏览器会使用AJAX技术向服务器发出请求,服务器会查询名为zhangSan的用户是否存在,最终服务器返回true表示名为lemontree7777777的用户已经存在了,浏览器在得到结果后显示“用户名已被注册!”。
整个过程中页面没有刷新,只是局部刷新了;
在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作;
- ajax的优缺点
#优点
AJAX使用Javascript技术向服务器发送异步请求;AJAX无须刷新整个页面;因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高;
#优点
AJAX使用Javascript技术向服务器发送异步请求;
AJAX无须刷新整个页面;
因为服务器响应内容不再是整个页面,而是页面中的局部,所以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
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对象、错误信息、捕获的错误对象(可选)。
前端代码:
<!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>
前端代码:
<!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>
#后台代码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)
#后台代码
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)
转载于:https://www.cnblogs.com/De-Luffy/p/7831802.html
2017-11-14相关推荐
- #UnityTips# 2017.11.14
hi,all.最近比较忙,所以更新也比较慢了. 今天就来和大家分享一个小Tip,它是关于UGUI的坑的. 使用过UGUI的朋友们都知道,Canvas的渲染方式有三种: Screen Space Ove ...
- 小学计算机室均衡解说词,迎接县均衡化国家验收学校解说词(2017.11.14)
迎接县均衡化国家验收学校解说词 办学条件组 尊敬的各位专家.各位领导: 欢迎莅临我校检查指导工作.我们宁津县第二实验小学始建于1997年,是一所县属非寄宿完全小学.当时只有北面这一座楼,29名教师.2 ...
- 第26次Scrum会议(11/14)【欢迎来怼】
一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min. 地 ...
- 支持 C++11/14/17 功能(现代 C++
支持 C++11/14/17 功能(现代 C++) 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档. 本文描述了 Vis ...
- 2017无盘服务器,(2017.11.19)云更新2017正式版2017.6.15.6596无盘xp-win7x32-x64-win10x64公包...
重要更新: 一.重点功能更新 1.三层更新核心组件升级,降低80%的游戏更新量 : 2.新增显卡PNP功能 (新环境部署更简单): 3.同时支持中英双语言环境 (更高Bigger): 4.优化万兆环境 ...
- 日常总结2017/11/4
.LOG /********************************************************************************************** ...
- Xamarin 2017.11.9更新
Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...
- Xamarin 2017.11.1更新
Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...
- VS2010-2015对C++11/14/17特性的支持
VS2010-2015对C++11/14/17特性的支持 C++11 功能列表 Visual C++ 实现了 C++11 核心语言规范 中的绝大多数功能.许多 C++14 库功能和某些为 C++17 ...
- Test on 11/14/2016
@kaike 第一题太简单我不想说什么 来说第二题. 1.小x的旅行 (travel.pas/c/cpp) [问题描述] 小x大学毕业后,进入了某个公司做了高层管理,他每年的任务就是检查这个公司在 ...
最新文章
- 五大分布式事务,你了解多少?
- php 头部utf8,PHP去掉utf8格式文件中的bom头部_PHP教程
- sys.stdout sys.stderr的用法
- redis取出list最边的一个_这几个Redis使用技巧,让你的程序快如闪电
- 组织配置java项目的外部lib包
- 正确获取Java事件通知
- python itertools卡死_Python使用itertools模块来解决算法问题,python
- python机器学习案例系列教程——推荐系统
- 计算机408重点知识及其他(面试)
- java中点击按钮读取和写入文件实现登录和注册
- 微信原版提示音_抖音阿豆微信提示音修改app-抖音很火的微信提示音阿豆铃声软件v1.0...
- 新体制SAR——BiDi SAR
- 基于SSM的在线点餐系统的设计与实现
- 无线降噪耳机哪个品牌好?2021年无线降噪耳机排行榜
- uni-app animation动画
- Python挑战游戏( PythonChallenge)闯关之路Level 0
- 如何通过线性回归预测股票价格?
- 解决XWPFRun的addPicture方法无法显示图片的问题
- verilog写的一个简洁实用的PWM模块
- 你一定要知道的71个做饭技巧
热门文章
- 2021-08-3116. 最接近的三数之和 排序+双指针
- 363.矩形区域不超过K的最大数值和
- arduino的esp32程序无法上传_【arduino】arudino开发ESP32 SPIFFS文件上传方法
- BAT[阿里、百度、腾讯]等互联网公司数据结构面试题(一) python分析实现
- 杭电HDUacm2037
- Machine Learning Books List
- 《Web漏洞防护》读书笔记——第5章,数据安全
- 浮窗 动画特效 android,悬浮窗能实现自定Animation动画效果吗?
- java 从_java-从查询字符串中过滤参数(使用番石榴?...
- 小程序UI库 iView Weapp