(一)JSON格式

(1)JSON介绍

对于JSON格式具体和python字典来对比的话,有这样几个细节需要大家注意:

(2)JS、Python与JSON类型转换

①JS与JSON的转换

<!DOCTYPE html&gt;
<html lang="en"&gt;
<head&gt;
    <meta charset="UTF-8"&gt;
    <title&gt;jsjson类型转换</title&gt;
</head&gt;
<body&gt;
<script&gt;
    //定义一个js对象
    js_obj = {'name':'张三','age':18}

    // js对象转成json格式的数据  字符
    str = JSON.stringify(js_obj)
    console.log(str)             //   输出单引号变为了双引号{"name":"张三","age":18}
    // console.log(typeof str);  //   类型string

    // json格式的数据转成js对象 object对象
    obj1 = JSON.parse(str)
    console.log(obj1);  //输出双引号变为了单引号{name: '张三', age: 18}
    console.log(typeof obj1);  //类型是object
</script>
</body>
</html>

②Python与JSON的转换
python代码

import json       #导入json模块   
# dic = {"name":"子冧","age":18,"bool":True}
# print(type(dic))  # <class 'dict'>

# 字典类型
di = {'name':'张三','age':18,'sex':'男'}
# 转成json格式数据
jd = json.dumps(di)
# print(jd)  # {"name": "u5b50u51a7", "age": 18, "sex": "u7537"}
# print(type(jd))  # <class 'str'>

# 转回python的字典
dic = json.loads(jd)
print(dic)  # {'name': '张三', 'age': 18, 'sex': '男'}
print(type(dic))  # 类型<class 'dict'>

在这里插入图片描述

(二)Ajax使用

(1)Ajax介绍

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页技术。AJAX = 异步 JavaScript 和 XML。 (asynchronous JavaScript and XML)

(2)作用

通过后台服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

(3)tornado

首先在虚拟机下载tornadopip install tornado
下载完成后可以用pip list查看是否下载成功
然后pycharm引入tornado模块import tornado.web
之后ctrl+鼠标左键单击一下web单词复制25-37行代码自己文件
在这里插入图片描述
后端代码:

# 前后端数据交互
# ctrl+鼠标左键单击一下web单词
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        # self.write("Hello, world")
        self.render('test2.html')    # 引用前端界面

# 前端表单标签当中用户密码
    def post(self):
        print(self.get_argument('user2'))
        print(self.get_argument('pwd2'))

# 传给前端
if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler),# 前端访问路由
    ])
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--<form action="/" method="post">-->
    用户名<input type="text" placeholder="输入用户名" name="user"> <br>&amp;emsp;码: <input type="password" placeholder="输入密码" name="pwd"> <br>
    <input type="submit" value="登录" id="btn">
<!--</form>-->


<!--jq ajax异步提交-->
<!-- 引入了jQuery模块 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
<script>
    $('#btn').click(function (){
        user = $('input[name="user"]').val()      /*通过属性选择器选中input标签属性为name,值为user,在获取val*/
        pwd = $('input[name="pwd"]').val()


        //数据提交到后台
        $.ajax({
            'type':'post',       /*类型*/
            'url':'/',           /*路由*/
            'data':{
                'user2':user,
                'pwd2':pwd

            }
        })
    })
</script>

</body>
</html>

运行结果
在这里插入图片描述
在这里插入图片描述
使用Ajax后,点击登陆页面仍然保留前端样式,数据提交到后台。

(4)前后交互案例加法运算

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>前后交互案例加法计算</title>
</head>
<body>
<input type="text" name="a">+
<input type="text" name="b">=
<input type="text" name="c">
<button id="btn">计算</button>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
<script>
    ipt1 = $('input[name="a"]')
    ipt2 = $('input[name="b"]')
    ipt3 = $('input[name="c"]')
    btn = $('#btn')
    btn.click(function () {
        num1 = ipt1.val() //string
        num2 = ipt2.val()

//通过前端实现
        // console.log(typeof num1)  //  查看num1类型为string
        // num3 = num1+num2
        // console.log(num3)  //   输出11,为字符拼接
        // num3 = parseInt(num1)+parseInt(num2)    //字符串转整形
        // ipt3.val(num3)
         
//通过后端实现   
        $.ajax({
            'type':'post',
            'url':'/',
            'data':{
                'num1':num1,
                'num2':num2,
            },
            // 后台响应成功之后返回前端页面的值
            'success':function (data) {  //data前端页面的值 字典
                num3 = data['result']
                ipt3.val(num3)
            }
            },
        )
    })
</script>
</body>
</html>

后端代码:

import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        # self.write("Hello, world")
        self.render('test3.html')

    def post(self):
        num1 = int(self.get_argument('num1'))
        num2 = int(self.get_argument('num2'))
        num3 = num1+num2

        # 传给前端是字典类型的数据
        ret = {'result':num3}   #接收
        self.write(ret)         #写入


if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()

原文地址:https://blog.csdn.net/qvqqv/article/details/130505597

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27004.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注