第一部分:JSON简介
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON</title>
</head>
<body>
<script>
//定义一个JSON对象
var obj = {
"class":"university",
"name":2,
"student":111
};
//可读性
console.log(obj);
console.log(obj.class);
// 可写行
obj.student = "学生真棒";
console.log(obj.student);
console.log(typeof obj); //object 是一个json对象
// JSON遍历
for(var key in obj){
console.log(key + ":" + obj[key]);
}
// JSON对象转字符串
var obj1 = JSON.stringify(obj);
console.log(typeof obj1); //string
// 字符串转JSON对象
var obj2 = JSON.parse(obj1);
console.log(typeof obj2); //object
</script>
</body>
</html>
第二部分:前后交互
1.环境配置:::(使用的是Virtualbox,pycharm,python3.6)
(1)虚拟机里:
workon py3env #进入虚拟环境
pip install tornado #安装tornado库
pip list #观察是否安装tornado库成功
(2)pycharm里:::
第一步:
python解释器路径为:::/home/pyvip/.virtualenvs/py3env/bin/python3.6
第二步:
改文件从pycharm中上传到虚拟机的方式,改为总是自动上传!
第三步:
设置同步路径,即代码上传到虚拟机的路径
Root path只要是/home/pyvip/目录下的都可以选,但是不能选择系统文件夹(.开头的文件夹)。
这里的路径和刚刚的Root path两个只一个写具体路径,另一个/即可。
2.此处介绍前后交互的两种方式:
(1)利用form表单里的name属性进行前后端交互
首先!
import tornado.web
查看tornado里的web的原码,CV大法其中的26到38行
然后!HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>前后交互--form表单</title>
</head>
<body>
<form action="/" method="post">
用户名:<input type="text" placeholder="请输入用户名" name="user"><br>
密 码:<input type="text" placeholder="请输入密码" name="pwd"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
最后!Python代码:
import tornado.web
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("Ajax1.html") #需要进行前后交互的HTML文件的路径
def post(self, *args, **kwargs): #此处的用post还是get取决于HTML文件中form表单的method属性(二者一样)
#通过打印在控制台进行查看,有没有成功从前端拿到信息
print(self.get_argument("user")) #.get_argument()拿到的是单个的参数,里面参数是form表单里name属性的属性值。
print(self.get_argument("pwd"))
self.write("提交成功!") #提交成功即可在前端页面显示 提交成功!
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler), #r""里面的是需要进行同步的路径,需要和form表单里的action一致。
])
application.listen(8888) #端口号 对应虚拟机里设置的端口号
tornado.ioloop.IOLoop.current().start()
如何实现:
首先:运行.py文件
无报错后,运行HTML文件
然后将前端界面的地址栏改为:127.0.0.1:8888并回车
无报错即为转发成功
最后输入用户名和密码,并点击提交按钮,即可在pycharm控制台显示用户名和密码。
(2)利用AJAX进行前后端交互
**1.利用form表单进行前后端交互(传统交互模式)在提交时会进行整个页面的刷新;
而利用AJAX则是进行异步加载,可以在不重载整个页面的前提下进行局部刷新。
2.什么是Ajax?
是一门异步的加载技术,可以在不重载整个网页的前提下,进行局部刷新。
3.Ajax怎么用?
Ajax的使用分为原生和jq(Jquery)两种。
**
使用方法和上面那种方法一模一样!!!
下面使用的是JQ的Ajax:::
1.python代码:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("3.Ajax_jquery.html") #需要进行前后交互的HTML文件的路径
def post(self, *args, **kwargs): #此处的用post还是get取决于HTML文件中form表单的method属性(二者一样)
#通过打印在控制台进行查看,有没有成功从前端拿到信息
aaa = int(self.get_argument("aa")) #.get_argument()拿到的是单个的参数,里面参数是通过ajax传输过来的数据的键值对的键
bbb = int(self.get_argument("bb"))
c = aaa + bbb
# 将后台处理过后的前端的数据回显到前端
return_data = {"result":c} #都是以JSON形式进行传输,将需要传输的数据构造成JSON对象
self.write(return_data) #将后台需要传递给前端的数据回显给前端
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler), #r""里面的是需要进行同步的路径,需要和form表单里的action一致。
])
application.listen(9999) #端口号 对应虚拟机里设置的端口号
tornado.ioloop.IOLoop.current().start()
2.HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax_jquery</title>
<!--同步:向服务器发送请求之后,需要等待服务器响应结束完毕,-->
<!--才能发送第二个请求。如果没有等待服务器响应结束就发送别的请求,会出现卡顿现象。-->
<!--异步:向服务器发送请求之后,可以直接发送别的请求,它们之间没有任何干扰。可以实现局部刷新。-->
</head>
<body>
<h1>AJAX + JQUERY 实现前后交互</h1>
<input type="text">+
<input type="text">=
<input type="text">
<button id="btn1">计算</button>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script> <!--要用网址引用-->
<script>
// 获取元素
var ipt = $("input");
var btn = $("#btn1");
btn.click(function () {
// 获取值
var a = ipt.eq(0).val(); //eq是获取下标对应的标签;val()是得到该标签内用户输入的值
var b = ipt.eq(1).val();
// 使用JQ里面封装好的Ajax方法将前端的数据传输给后端
$.ajax({
"type":"post", //数据传输的方式:post,get
"url":"/", //提交的路径
"data":{ //键值对形式 传输的数据(需要传输到后台的数据)
"aa":a,
"bb":b
},
// 前后端成功之后的回调函数success Ajax请求发送成功后,自动执行此函数
"success":function (data1) { //callback==服务器write的数据
x = data1["result"];
ipt.eq(2).val(x); //将回显的数据放进前端指定的位置
},
// 失败之后的回调函数
"error":function (error) {
console.log(error);
}
})
})
</script>
</body>
</html>