前端与后端数据交互 jQuery Ajax+Python Flask (附详细代码)

回忆一下遇到的坑:

1.<form>标签下的<input>、<textarea>等标签必须带有name属性才能被form捕捉提交。

2.POST方法提交时要用request.form来获取,而用GET方法则用request.args来获取。

前端与后端的数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据到后端,后端返回json

  • 前端的数据发送与接收
    1)提交表单数据
    2)提交JSON数据
  • 后端的数据接收与响应
    1)接收GET请求数据
    2)接收POST请求数据
    3)响应请求

前端的数据发送与接收

1. 提交表单数据

  • GET请求


 
 
  1. var data = {
  2. "name": "test",
  3. "age": 1
  4. };
  5. $.ajax({
  6. type: 'GET',
  7. url: /your/url/,
  8. data: data, # 最终会被转化为查询字符串跟在url后面: /your/url/?name=test&age=1
  9. dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据
  10. success: function(data) { # 这里的data就是json格式的数据
  11. },
  12. error: function(xhr, type) {
  13. }
  14. });

  • POST请求


 
 
  1. var data = {}
  2. # 如果页面并没有表单,只是input框,请求也只是发送这些值,那么可以直接获取放到data中
  3. data[ 'name'] = $( '#name').val()
  4. # 如果页面有表单,那么可以利用jquery的serialize()方法获取表单的全部数据
  5. data = $( '#form1').serialize();
  6. $.ajax({
  7. type: 'POST',
  8. url: /your/url/,
  9. data: data,
  10. dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据
  11. success: function(data) { # 这里的data就是json格式的数据
  12. },
  13. error: function(xhr, type) {
  14. }
  15. });


 
 
  1. 注意:
  2. A)参数dataType:期望的服务器响应的数据类型,可以是null, xml, script, json
  3. B)请求头中的Content-Tpye默认是Content- Type:application/x-www-form-urlencoded,所以参数会被编码为 name=xx&age= 1
  4. 种格式,提交到后端,后端会当作表单数据处理

2.提交JSON数据

如果要给后端传递json数据,就需要增加content-type参数,告诉后端,传递过来的数据格式,并且需要将data转为字符串进行传递。实际上,服务端接收到后,发现是json格式,做的操作就是将字符串转为json对象。

另外,不转为字符串,即使加了content-type的参数,也默认会转成name=xx&age=1,使后端无法获取正确的json。


 
 
  1. # POST一个json数据
  2. var data = {
  3. “name”: "test",
  4. "age", 1
  5. }
  6. $.ajax({
  7. type: 'POST',
  8. url: /your/url/,
  9. data: JSON.stringify(data), # 转化为字符串
  10. contentType: 'application/json; charset=UTF-8',
  11. dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据
  12. success: function(data) { # 这里的data就是json格式的数据
  13. },
  14. error: function(xhr, type) {
  15. }
  16. });

后端的数据接收与返回

1.接收GET请求数据


 
 
  1. name = request.args. get( 'name', '')
  2. age = int(request.args. get( 'age', '0'))

2.接收POST请求数据

接收表单数据


 
 
  1. name = request.form. get( 'name', '')
  2. age = int(request.form. get( 'age', '0'))

接收Json数据

data = request.get_json()
 
 



 
 
  1. 另外,如果前端提交的数据格式不能被识别,可以用 request .get_data()接收数据。
  2. 微信公众号后台接收微信推送的 xml格式的消息体,就可以用 request .get_data()来接收

3.响应请求

Flask可以非常方便的返回json数据


 
 
  1. from Flask import jsonify
  2. return jsonify({ 'ok': True})

看一下源码就可以知道,jsonify就是帮我们做了点添加mimetype这样的杂事,所以如果不嫌麻烦和难看,你也可以这样写


 
 
  1. # 太丑了,还是别这么干了
  2. return Response(data=json.dumps({ 'ok': True}), mimetype= 'application/json')

放两张截图来直观看一下请求




  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值