flask之使用ajax实现点击左侧边栏,不刷新显示右边内容

在实现点击左侧导航栏,右侧不刷新页面显示网页内容的方法有很多,可以通过ifram实现、可以使用div绑定a或者li的点击事件 阻止a的默认行为,用jQuery的load()可以来加载这个div,即将网页放入div中,当然也可以用下面的方式实现,采用ajax技术实现局部刷新,有人说下面的方法比较麻烦,我感觉还好,比较适合自己的需求,实现也比较简单,通过flask提供web服务,使用ajax异步加载,特别的简单,就不在细说,直接看代码吧。

server.py

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/product/list")
def product_list():
    return render_template("productList.html")

@app.route("/user/list")
def user_list():
    return render_template("userList.html")

@app.route("/record/list")
def record_list():
    return render_template("recordList.html")

if __name__ == "__main__":
    app.run(debug=True)

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">   <%-- 在IE运行最新的渲染模式 --%>
        <!--<meta name="viewport" content="width=device-width, initial-scale=1">   <%&#45;&#45; 初始化移动浏览显示 &#45;&#45;%>-->
        <meta name="Author" content="Dreamer-1.">

        <!-- 引入各种CSS样式表 -->
        <link rel="stylesheet" href="../static/css/bootstrap.css">
        <link rel="stylesheet" href="../static/css/font-awesome.css">
        <link rel="stylesheet" href="../static/css/index.css">  <!-- 修改自Bootstrap官方Demon,你可以按自己的喜好制定CSS样式 -->
        <link rel="stylesheet" href="../static/css/font-change.css">    <!-- 将默认字体从宋体换成微软雅黑(个人比较喜欢微软雅黑,移动端和桌面端显示效果比较接近) -->

        <script type="text/javascript" src="../static/js/jquery-1.12.3.min.js"></script>
        <script type="text/javascript" src="../static/js/bootstrap.min.js"></script>

        <title>- 后台管理系统 -</title>
    </head>

    <body>
    <!-- 顶部菜单(来自bootstrap官方Demon)==================================== -->
        <nav class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" >
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="index.html">XXXX.com</a>
                </div>

                <div id="navbar" class="navbar-collapse collapse">
                    <ul class="nav navbar-nav navbar-right">                        
                        <li><a href="###" onclick="showAtRight('/user/list')"><i class="fa fa-users"></i> 用户列表</a></li>
                        <li><a href="###" onclick="showAtRight('/product/list')"><i class="fa fa-list-alt"></i> 产品列表</a></li>
                        <li><a href="###" onclick="showAtRight('/record/list')" ><i class="fa fa-list"></i> 订单列表</a></li>
                    </ul>

                </div>
            </div>
        </nav>

    <!-- 左侧菜单选项========================================= -->
        <div class="container-fluid">
            <div class="row-fluie">
                <div class="col-sm-3 col-md-2 sidebar">     
                    <ul class="nav nav-sidebar">
                        <!-- 一级菜单 -->
                        <li class="active"><a href="#userMeun" class="nav-header menu-first collapsed" data-toggle="collapse">
                            <i class="fa fa-user"></i>&nbsp; 用户管理 <span class="sr-only">(current)</span></a>
                        </li> 
                        <!-- 二级菜单 -->
                        <!-- 注意一级菜单中<a>标签内的href="#……"里面的内容要与二级菜单中<ul>标签内的id="……"里面的内容一致 -->
                        <ul id="userMeun" class="nav nav-list collapse menu-second">
                            <li><a href="###" onclick="showAtRight('/user/list')"><i class="fa fa-users"></i> 用户列表</a></li>
                        </ul>

                        <li><a href="#productMeun" class="nav-header menu-first collapsed" data-toggle="collapse">
                            <i class="fa fa-globe"></i>&nbsp; 产品管理 <span class="sr-only">(current)</span></a>
                        </li> 
                        <ul id="productMeun" class="nav nav-list collapse menu-second">
                            <li><a href="###" onclick="showAtRight('/product/list')"><i class="fa fa-list-alt"></i> 产品列表</a></li>
                        </ul>

                        <li><a href="#recordMeun" class="nav-header menu-first collapsed" data-toggle="collapse">
                            <i class="fa fa-file-text"></i>&nbsp; 订单管理 <span class="sr-only">(current)</span></a>
                        </li> 
                        <ul id="recordMeun" class="nav nav-list collapse menu-second">
                            <li><a href="###" onclick="showAtRight('/record/list')" ><i class="fa fa-list"></i> 订单列表</a></li>
                        </ul>

                    </ul>

                </div>
            </div>
        </div>

<!-- 右侧内容展示==================================================   -->         
                <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
                    <h1 class="page-header"><i class="fa fa-cog fa-spin"></i>&nbsp;控制台<small>&nbsp;&nbsp;&nbsp;欢迎使用XXX后台管理系统</small></h1>

                        <!-- 载入左侧菜单指向的jsp(或html等)页面内容 -->
                        <div id="content">

                            <h4>                    
                                <strong>使用指南:</strong><br>
                                <br><br>默认页面内容……
                            </h4>                               

                        </div>  
                </div> 


        <script type="text/javascript">
            function showAtRight(url){
                $.ajax({
                    type :"GET",
                    url : url,
                    dataType:"html",
                    success : function(data) {//返回数据根据结果进行相应的处理
                        $("#content").html(data);
                    },
                    error:function(){
                        $("#content").html("获取数据失败!");
                    }
                });
            }
        </script>

    </body>
</html>

productList.html

<div>
    我是产品列表 ╰( ̄▽ ̄)╭
</div>

recordList.html

<div>
    我是产品列表 ╰( ̄▽ ̄)╭
</div>

userList.html

<div>
    我是用户列表 (っ´Ι`)っ
    <input type="file" value="按钮">
</div>

效果如下:
这里写图片描述
这里写图片描述

项目地址:http://download.csdn.net/detail/guoqianqian5812/9887747

参考:
http://www.cnblogs.com/Dreamer-1/p/5683992.html

Flask框架可以与AJAX异步JavaScript与XML)一起使用,以实现前端与后端的异步通信。在Flask使用AJAX可以通过发送HTTP请求来获取或提交数据,而无需刷新整个页面。 要在Flask使用AJAX,你可以按照以下步骤进行操作: 1. 在前端页面中引入jQuery库,以便使用提供AJAX方法。 2. 在前端页面中编写JavaScript代码,使用$.ajax()方法发送HTTP请求。你可以指定请求的类型(GET或POST)、URL和数据等参数。 3. 在Flask后端中定义相应的路由,用于处理AJAX请求。你可以使用Flask提供的装饰器(如@app.route)来定义路由,并编写相应的视图函数来处理请求。 4. 在视图函数中,你可以通过request对象获取前端发送的数据,并根据需要进行处理。然后,你可以使用Flask提供的方法(如jsonify)将处理结果返回给前端。 需要注意的是,Flask使用AJAX时,服务端往往并没有进行模板渲染,或者仅仅进行了部分渲染,这可能导致flash消息失效。因此,你可能需要手动实现自己的消息闪现,参照官方flash消息的实现方式。 总结起来,Flask使用AJAX的步骤包括引入jQuery库、编写前端JavaScript代码发送HTTP请求、在Flask后端定义路由和视图函数来处理请求,并在视图函数中返回处理结果给前端。 #### 引用[.reference_title] - *1* [flask ajax请求后flash方法(消息闪现)无效问题的解决方法](https://blog.csdn.net/weixin_39533052/article/details/119440267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [FLask框架AJAX操作](https://blog.csdn.net/weixin_52185313/article/details/122509405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值