Ajax :01

本文详细介绍了JSON在JavaScript与JavaScript Object Notation间的转换,并展示了Tornado框架下Ajax的使用,包括前后端交互、表单提交及异步数据处理。通过实例代码解释了Ajax的GET和POST方法,以及如何处理前端与后端的数据传递。
摘要由CSDN通过智能技术生成

一.JSON

JSON也是一种字符串,是一种特殊的字符串,json对象既可以是字符串也可以是数值,null,数组,对象。

1. json 转 js(js 是 object 型)

var str = '{"name":"北斗","age":18}'
    var obj4 = JSON.parse(str)
    console.log(typeof obj4);

2.js 转 json(json 是 string 型)

var str1 = JSON.stringify(obj4)
    console.log(typeof str1);

二.Ajax 的使用

1.前后端交互
首先提取 tornado.web 数据库中的模块

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

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

2. from 表单提交

(1)py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
        self.render("ajax2.html") //渲染页面

	def post(self):
        print(self.get_argument("user"))
        print(self.get_argument("pwd"))

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

(2)html

提交路径为 根目录,提交方式为 post

<form action="/" method="post">

    用户名: <input type="text" name="user"> <br>&emsp;: <input type="text" name="pwd">
    <input type="submit" value="提交">
    同步:(客户端) 提交请求 -》等待服务器处理 -》处理完毕 -》 这个期间客户端不能做其他事情
    异步:(客户端) 提交请求 -》等待服务器处理 -》处理完毕 -》 这个期间客户端可以做其他事情

</form>

3.ajax 前后端交互

(1)post

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
        
	通过post get_argument接收数据  name属性
    def post(self):
        a = int(self.get_argument("aa"))
        b = int(self.get_argument("bb"))
        c = a + b
        #把结果传回前端
        r_data = {"cc":c}
        self.write(r_data)

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()
$.ajax({
            "type":"post", //提交方式
            "url":"/", //提交路径
            "data":{ //传值
                "aa":a,
                "bb":b
            }

(2)get

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
        # 渲染前端
        self.render("ajax2.html")

class Test(tornado.web.RequestHandler):
    def get(self):
        a = int(self.get_argument("aa"))
        b = int(self.get_argument("bb"))
        c = a + b
        r_data = {"cc": c}
        self.write(r_data)

if __name__ == "__main__":
    application = tornado.web.Application([
        # 路由
        (r"/", MainHandler),
        (r"/Test", Test),
    ])
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()
<body>
<input type="text"> +
<input type="text"> =
<input type="text">
<button>和国际化</button>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
    //获取元素
    var apint = $("input")
    var button = $("button")

    button.click(function (){
        //拿到输入的值
        var a = apint.eq(0).val()
        var b = apint.eq(1).val()
        console.log(a);
        console.log(b);
        $.ajax({
            "type":"get", //提交方式
            "url":"/Test", //提交路径
            "data":{
                "aa":a,
                "bb":b
            },
            //c 成功返回成功回调函数
            "success":function (data) { //data 后台所返回的数据 r_data
                var c = data["cc"]
                //把值写入到前端
                apint.eq(2).val(c)
                console.log(c);
            },//失败返回失败回调函数
            "error":function (error) {
                console.log(error);
            }
        })
    })
</script>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风和云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值