Flask web开发 处理Ajax请求
本文介绍如何处理ajax请求,
一、处理ajax的post请求
举例一:
js代码举例如下:
var id = obj.parentNode.parentNode.id;
$.post("/delitem/"+id, {}, function(data){
showData(data);
},"json");
对应的flask代码举例如下:
@app.route('/delitem/<id>', methods=['POST'])
def delitem(id):
db.delItem(id) #业务代码
#db.data是python列表对象(元素是字典),返回到浏览器后就是js数组(元素是Josn对象
return jsonify({"result":db.data})
注意,处理函数可以return两种格式的数据。一是合法的json格式的字符串。
二是通过jsonify 方法将其参数转为一个合法的'Response'对象,jsonify方法的参数有如下几种形式:
1)是个字典对象。 到了浏览器,js获取到的就是一个js对象。
2)如 1个或多个参数名= python对象 的格式, 到了浏览器,js获取到的就是一个js对象,该js对象有一个属性名叫result。如
jsonify(a=1,result=[1,2,3],c="hello")
这时到了浏览器,js获取到的就是一个js对象,该js对象就有三个属性,分别是 a, result, c 。其中result属性的值是个数组。
举例2:
js代码如下
var id = $("#recordid").val();
var name = $("#recordname").val();
var msg = $("#recordinfo").val();
$.post("/additem", {"id":id,"name":name,"msg":msg}, function(data){
showData(data);
},"json");
对应的flask代码如下:
@app.route('/additem', methods=['POST'])
def additem():
db.addItem(request.form.get('id'),request.form.get('name'),request.form.get('msg'))
return jsonify({"result":db.data})
注意,@app.route 方法中需要指定methods参数为POST
可以看出,在flask中,通过request.form.get 来获取ajax发出的请求。 get方法还可以带第2个参数缺省值,如果指定的参数名不存在,有缺省值的则返回缺省值,没有的话返回None。注意,如果浏览器不是通过ajax发来的post请求,而是通过form提交的,则用request.form[表单元素名]来获取表单元素中的值。
二、处理ajax的get请求
与post请求类似,区别是:
1)@app.route 方法中不需要指定methods参数,因为缺省就是响应get请求
2)获取js发来的参数是用 request.args.get方法
Flask web开发 处理Ajax请求的更多相关文章
- Flask web开发 处理POST请求(登录案例)
本文我们以一个登录例子来说明Flask对 post请求的处理机制. 1.创建应用目录,如 mkdir example cd example 2.在应用目录下创建 run.py文件,内容如下 fr ...
- Flask web开发 处理Session
本文我们在上篇文章<Flask web开发 处理POST请求(登录案例)>的基础上,来讲述Flask对session的支持. 在上面案例上,我们需要修改和新增如下功能 1.登录成功后的 ...
- Flask web开发 请求拦截和预处理
我们在开发WEB应用时,往往会需要对所有的url请求进行拦截,做些预处理,比如权限处理.日志等统一处理. 本文介绍一下Flask中的处理机制.我们通过一个简单的例子来说明. 1.编写一个简单应用 ru ...
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉 ...
- 《Flask Web开发实战:入门、进阶与原理解析(李辉著 )》PDF+源代码
一句话评价: 这可能是市面上(包括国外出版的)你能找到最好的讲Flask的书了 下载:链接: https://pan.baidu.com/s/1ioEfLc7Hc15jFpC-DmEYBA 提取码: ...
- Flask Web开发读书笔记
开篇:目前想自学Flask Web开发--基于Python,找了几本书准备啃啃,同时也会分享读书笔记.希望和大家一起进步. Flask是小型框架,可以算是微框架,但是他的功能还是比较多 Flask有三 ...
- 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码
在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...
- Flask Web开发从入门到放弃(一)
第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...
- web api 解决Ajax请求跨域问题
前端ajax请求接口时,经常出现跨域问题,当然了解决方法有很多种,比如: http://www.jb51.net/article/68424.htm 我本人恰好前后端都会一点,所以直接在接口端处理. ...
随机推荐
- MyEclipse 怎样手动编译整个项目
去掉自动编译的对勾,项目上就有build project,在菜单project->>build automatically. MyEclipse 菜单 Project->Build ...
- 导出Ext.grid.Panel到excel
1.客户端定义,基本的想法是form提交表格头定义,数据,以json方式传输 Ext.grid.Panel.addMembers({ exportExcel:function(options){ if ...
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...
- MySQl 存储过程+游标
DROP PROCEDURE IF exists pro_Insertflightplan_stat; create procedure pro_Insertflightplan_stat(exec ...
- Mysql的执行顺序
参考:http://blog.csdn.net/jintao_ma/article/details/51253356 http://www.cnblogs.com/rollenholt/p/37769 ...
- 【转】install intel wireless 3165 driver for ubuntu 14.04.3
[转]install intel wireless 3165 driver for ubuntu 14.04.3 Ubuntu 14.04.3 with 3.19 kernel can’t drive ...
- python中decorator
先讲一下python中的@符号 看下面代码 @f @f2 def fun(args, args2, args3, args4, ……): pass 上面代码相当于 def fun(args, args ...
- 异常:cvc-complex-type.2.4.a: Invalid content was found starting with element
web.xml 出现cvc-complex-type.2.4.a: Invalid content was found starting with element <web-app xmlns= ...
- myeclipse 8.6 插件安装之SVN
在这里我要说明一点,myEclipse 8.6的插件安装和之前的版本可能会有一些区别,下面是SVN插件的安装: 1.从官网下载site-1.6.13.zip文件,网址是:subclipse.tigri ...
- Introduction to Guid ( globally unique identifier )
什么是 GUID? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装. 在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...