首页 > 其他分享 >05 Ajax请求(扩展,延伸)

05 Ajax请求(扩展,延伸)

时间:2023-08-28 17:23:10浏览次数:33  
标签:__ function 请求 get Flask 05 ajax Ajax name

05 Ajax请求(扩展,延伸)

首先, 我们用Flask创建一个后台服务器(自己做网站了哈)
目录结构:
image

服务端:

from flask import Flask, render_template, request  # pip install Flask

app = Flask(__name__)

@app.route("/")
def index():
    # 跳转到首页
    print("你曾经来过服务器")
    name = "zzc"
    # 数据是在这里渲染后, 返回个客户端的html
    return render_template("index.html", name=name)  

if __name__ == '__main__':
    app.run()

html页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
</head>
<body>
    我就是一个传统的html页面, 我的名字是{{name}}
</body>
1. 发送get请求

接下来. 我们使用jquery来发送ajax.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <script>
        function setCookie(name, value) {
            let Days = 30;
            let exp = new Date();
            exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
            document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
        }
        $(function(){
            // 可以在js任意位置设置cookie信息
            setCookie("name", "i-have-a-dream")
            $(".get_btn").click(function(){
                $.ajax({
                    url:"/ajax_get", // 服务器地址: 域名+url
                    method:'get',  // 发送get请求
                    headers:{  // 添加请求头信息
                        "token":"mememmememe",
                    },
                    data:{   // 传递参数
                        name:'alex',
                        _: new Date().getTime()
                    },
                    contentType:'application/json;charset=utf8',  
                    beforeSend: function(req){  // 也可以这样添加请求头信息
                        req.setRequestHeader("tokken", "i-can-do-it-haha");
                    },
                    success: function(back){  // 请求成功后. 返回数据了. 要做什么?
                        console.log(back);
                    }
                });
            })
        })
    </script>
</head>
<body>
    我就是一个传统的html页面, 我的名字是{{name}}
    <br/>
    <input type="button" class="get_btn" value="点我发送get_请求">
    <hr/>
    <a href="javascript:void(0);" class="post_btn" >点我发送post_请求</a>
</body>
</html>

服务器处理ajax_get请求:

@app.route("/ajax_get")
def ajax_get_req():
    # 接收cookie中的信息
    n = request.cookies.get('name')
    if not n:
        return "没有cookie就不要来了."
    # 接收header中的信息
    token = request.headers.get('token')
    if not token:
        return "没token还想来?"

    # Flask接收get请求的参数
    name = request.args.get('name')
    _ = request.args.get('_')
    if name and _:
        # 返回json
        return {"name":'alex', "id": 10086, "isMen": True}
    else:
        return "回家去吧"

2. 发送post请求(json)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery.js"></script>
    <style>
        #mask{
            position:fixed;
            top:0;
            left:0;
            right:0;
            bottom: 0;
            background-color: rgba(0,0,0, .3);
            color: #fff;
            font-size:30px;
            text-align: center;
            padding-top:300px;
            display:none;
        }

    </style>
    <script>
        $(function(){
            $(".post_btn").click(function(){
                $('#mask').css("display","block");
                $("#data_tbody").remove();
                $.ajax({
                    url:'/ajax_post',
                    method:'post',
                    data: JSON.stringify({
                        name:'alex',
                        id:'10086'
                    }),
                    headers: {  // 发送json数据. 要换这个头, 否则服务器收不到数据
                        "Content-Type": "application/json;charset=utf-8"
                    },
                    dataType:"text",
                    success:function(d){
                        $('#mask').css("display","none"); // 设置不遮罩
                        let data = JSON.parse(d);
                        let tbody = $("<tbody id='data_tbody'></tbody>")
                        data.forEach(function(item){
                            let tr = `<tr><td>${item.id}</td><td>${item.name}</td><td>${item.age}</td></tr>`;
                            tbody.append(tr);
                        });
                        $('table').append(tbody);
                    }
                })
            });
        })
    </script>
</head>
<body>
    我就是一个传统的html页面, 我的名字是{{name}}
    <br/>
    <input type="button" class="get_btn" value="点我发送get_请求">
    <hr/>
    <a href="javascript:void(0);" class="post_btn" >点我发送post_请求_加载一个表格试试</a>
    <hr/>
    <table width="80%" border="1">
        <thead>
        <tr>
            <td>id</td>
            <td>name</td>
            <td>age</td>
        </tr>
        </thead>

    </table>
    <div id="mask"><span>正在加载中......</span></div>
</body>
</html>

python服务器:

from flask import Flask, render_template, request  # pip install Flask
import time
import json

app = Flask(__name__)

@app.route("/")
def index():
    # 跳转到首页
    print("你曾经来过服务器")
    name = "alex"
    return render_template("index.html", name=name)  # 数据是在这里渲染后, 返回个客户端的html


@app.route("/ajax_post", methods=['POST'])
def ajax_get_post():

    # time.sleep(3)
    # 接收JSON数据
    print(request.json)

    lst = [
        {"id": 1, "name": "张飞", "age": 16},
        {"id": 2, "name": "刘备", "age": 16},
        {"id": 3, "name": "关羽", "age": 16},
        {"id": 4, "name": "吕布", "age": 16},
    ]

    return json.dumps(lst)

if __name__ == '__main__':
    app.run()

标签:__,function,请求,get,Flask,05,ajax,Ajax,name
From: https://www.cnblogs.com/zczhaod/p/17662872.html

相关文章

  • 在低代码平台执行 API 请求并将结果显示在页面上
    低代码开发平台(Low-CodeDevelopmentPlatform)是一种用于构建应用程序的软件开发环境,它允许开发者通过图形化的方式,而非传统的手动编码方式来创建应用程序。这种方式大大减少了开发应用程序所需的代码量,因此称为低代码。低代码平台的核心是其拖放式的用户界面,这允许开发者通过直......
  • 05 文件之IO
    标准IO介绍IO的概念I——input,指输入设备,比如键盘鼠标都是Input设备。O——output,指输出设备,比如显示器。优盘,网口,既是输入也是输出。文件类型文件指一组相关数据的有序集合。文件类型:常规文件r目录文件d字符设备文件c块设备文件b管道文件......
  • 龙芯LoongArch架构2K0500开发板应用于车辆管理和控制系统解决方案
         迅为iTOP-LS2K0500开发采用龙芯LS2K0500处理器,基于龙芯自主指令系统(LoongArch®)架构,片内集成64位LA264处理器核、32位DDR3控制器、2DGPU、DVO显示接口、两路PCIe2.0、两路SATA2.0、四路USB2.0、一路USB3.0、两路GMAC、PCI总线、彩色黑白打印接口、HDA及其他常用接口。......
  • websphere服务器对请求的解码配置
    tomcat、jboss服务器处理uri的解码方式是可配置的,在server.xml,具体路径不详述了,有一个uriencoding=“utf-8”,用起来很方便,但是websphere死活找不到类似的配置。 经查阅资料,weblogic、websphere服务器这种重量级的j2ee服务器,weblogic是默认就是用utf-8来处理的请求的,websphere如果......
  • WebService开发笔记 2 -- VS 2005 访问WebServcie更简单
    在上一回中我们创建了一个WebService服务(WebService开发笔记1--利用cxf开发WebService竟然如此简单),下面就来作一个跨平台访问WebServcie服务的例子....下面将在vs2005中通过c#.net访问我们创建好的WebService服务,C#.net第一次用,TNN的没想到这么简单,MS就是MS,不服不行。1.......
  • python+playwright 学习-77 playwright 发送接口请求APIRequestContext
    前言每个Playwright浏览器上下文都有与其关联的APIRequestContext实例,该实例与浏览器上下文共享cookie存储,可以通过browser_context.request或page.request访问。也可以通过调用api_request.new_context()手动创建一个新的APIRequest上下文实例。通过浏览器发请求可以通过browser......
  • 05 地址解析协议ARP
    地址解析协议(ARP)ARP(AddressResolutionProtocol)地址解析协议:根据已知的IP地址解析获得其对应的MAC地址ARP工作流程1.HOST1ARP缓存HOST1通信之前需要封装数据包,其中在封装二层数据链路层时,终端查询自己的ARP缓存表,ARP缓存表维护一个IP和MAC地址的对应关系,根据对端IP地......
  • DWR的注释(annotations)使用及反向调用(Reverse Ajax)
    先说说注释语法,省掉dwr.xml。(自从用了java5之后,现在越看一堆堆的配置文件越烦,越来越喜欢注释方式来的直接简单了)  首先下载最新的稳定版本的dwr.jar文件放到你的工程中。(还有需要其它的吗?不需要了,dwr就是这么简单)然后在web.xml中添加如下一段<!--DWRServlet--><servle......
  • Ajax
    AJAX第一章:ajax介绍1、AJAX全称为AsynchronousJavaScriptAndXML,就是异步的JS和XML。2、作用:通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。XML介绍XML可扩展标记语言。XML被设计用来传输和存储数据。XML和HTML类似,不同的是......
  • 用P3P解决IE的iframe中每次跨域请求产生新session的问题
    初来乍到,看到一篇cookie夸域的帖子,觉的他只是解决了跨二级域名的问题,自己曾经作过一个企业应用的sso,其中用到的p3p解决了cookie跨域的存取。 第一次发帖,请各位高手多多指教 首先介绍第一方Cookie和第三方cookie: 第一方Cookie是来自当前正在查看的网站,或者发送到当前正在查看的......