Python的flask接收前台的ajax的post数据和get数据的方法


Posted in Python onApril 12, 2021

ajax向后台发送数据:

①post方式

ajax:

@app.route("/find_worldByName",methods=['POST'])
type:'post',
data:{'cname':cname,'continent':continent},
这是post方式传值
那么在后台接收就是:(使用request的form方法)
continent = request.form.get("continent")
cname = request.form.get("cname")

②get方式(url参数)

 使用request的values方法

使用request的values方法

data:{'cname':cname,'continent':continent},
name=request.values.get("cname")

总结:

这两种的区别就是数据在ajax data里的发送方式不同(get和post),所以在后台接收的时候也会不同。
使用request.form.get 方式获取的是一个json字符串(在这个方法会自动转化json对象,可以直接用key访问)
使用request.values.get 方式获取的是通过url传递的get参数

Python的flask接收前台的ajax的post数据和get数据的方法

Python的flask接收前台的ajax的post数据和get数据的方法

下面的代码是整个流程实现:ajax:

//查询js
function find_res(){
    var cname;
    var continent;
    // $.ajax
    // ({
    //     method:"post",
    //     url:"http://localhost:8080/PycharmProjects/Cov/templates/world.html?_ijt=q6ulfhihrfp8rqkl8id73svio3",
    //     success:function(data)
    //     {
    //         //form表单数据的转化,转化成[ { name: , value:   },{ name: , value:   } ]
    //         all=$('#find_value').serializeArray()
    //         // console.log(all['cname'])
    //         console.log(all[0])
    //         cname=all[0]['value']
    //         alert(cname)
    //     }
    // })
    cname=document.getElementById("cname").value
    continent=document.getElementById("continent").value
    console.log(cname+continent)
    // alert("表单数据:   "+"国家:"+cname+ "大洲:"+ continent)
    $.ajax
    ({
            // sync:true,
            url:"/find_worldByName",
            // type:'post',
            data:{'cname':cname,'continent':continent},
            success:function (data)
            {
                // alert("!!!")
                table_data=data.data;
                for(var i=0;i<table_data.length;i++)
                {
                // console.log(table_data[i]);
                }
            var appendHTML = "";
        if($(".map-table tbody tr").length>0){
            $(".map-table tbody tr").remove();
        }
        // alert("list长度:"+table_data.length)
        for(var i=0; i<table_data.length; i++)
            {
            //分割日期字符串
            strdt=table_data[i][1].split(" ");
            strdt=strdt[0]+strdt[1]+strdt[2]+strdt[3]
            appendHTML = "<tr align='center' style='color:aquamarine;'><td>"+
            strdt+"</td><td>"+
            table_data[i][2]+"</td><td>"+
            table_data[i][5]+"</td><td>"+
            table_data[i][8]+"</td><td>"+
            table_data[i][9]+"</td><td>"+
            table_data[i][4]+"</td><td>"+
            (i+1)+"</td></tr>";
                $(".map-table tbody").append(appendHTML);
            }
        }
    })
}

前台html:

<table align="center" style="margin:3px"  cellspacing="7px">
                <form id="find_value">
                    <label><font color="#ff7f50">输入国家:</font></label>
                    <input id="cname" type="text" name="cname" placeholder="" value="">

                    <label><font color="#ff7f50">输入大洲:</font></label>
                    <input id="continent" type="text" name="continent" placeholder="" value="">

                    <input type="button" value="查询" onclick="find_res()">
                    <input type="reset" value="重置">
                </form>
                <thead>
                 <tr style="color: #FFB6C1">
                <th>时间</th>
                <th>国家</th>
                <th>累计确诊</th>
                <th>累计治愈</th>
                <th>累计死亡</th>
                <th>现存确诊</th>
                <th>排名</th>
              </tr>
                </thead>
                <tbody id="bd_data">
                </tbody>
            </table>

Python flask路由:

@app.route("/find_worldByName")
def find_worldByName():
    #获取用户传来的数据
    # jsondata = json.loads(request.form.get('jsondata'))
    res=[]
    #get方式
    cname = request.values.get("cname")
    continent = request.values.get("continent")
    #post方式
    # continent = request.form.get("continent")
    # cname = request.form.get("cname")

    # print(cname+continent)
    res=utils.find_worldByName(cname,continent)
    # res = utils.find_worldByName("美国", "")
    # print(res)
    return jsonify({"data": res})

后台获取数据库数据:

def find_worldByName(c_name,continent):
    print(c_name)
    print(continent)
    sql = " SELECT * FROM world WHERE  1=1 "
    if(c_name!=None):
        sql=sql+"AND ( c_name LIKE '%"+c_name+"%' )"
    if(continent!=None):
        sql=sql+" AND ( continent LIKE '%"+continent+"%') "
    sql=sql+" AND dt=(SELECT dt FROM world order by dt desc limit 1) order by confirm desc "

          # "AND continent LIKE '%%%%%s%%%%'" \
          # " order by dt desc " %(c_name,continent)
    # sql_temp = " SELECT * FROM world WHERE c_name LIKE '%"+c_name+"%' "
    res = query(sql)
    list= []
    for i in res:
        # print(i)
        list.append(i)
    return list;
def query(sql,*args):
    """
    通用封装查询
    :param sql:
    :param args:
    :return:返回查询结果 ((),())
    """
    conn , cursor= get_conn()
    print(sql)
    cursor.execute(sql)
    res = cursor.fetchall()
    close_conn(conn , cursor)
    return res

到此这篇关于Python的flask接收前台的ajax的post数据和get数据的方法的文章就介绍到这了,更多相关Python flask接收前台ajax post和get数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Flask框架的学习指南之开发环境搭建
Nov 20 Python
使用python实现生成用户信息
Mar 20 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python实现修改IE注册表功能示例
May 10 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python Subprocess模块原理及实例
Aug 26 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python基于socket函数实现端口扫描
May 28 Python
Python延迟绑定问题原理及解决方案
Aug 04 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
python实现简单反弹球游戏
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
You might like
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
img标签中onerror用法
2009/08/13 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
py中的目录与文件判别代码
2008/07/16 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
python 简单的多线程链接实现代码
2016/08/28 Python
Python数据操作方法封装类实例
2017/06/23 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
python实现处理mysql结果输出方式
2020/04/09 Python
python3中数组逆序输出方法
2020/12/01 Python
2014年商场国庆节活动策划方案
2014/09/16 职场文书
招标授权委托书样本
2014/09/23 职场文书
风之谷观后感
2015/06/11 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang