美文网首页程先生与媛小姐程序员web开发
前端与后端的数据交互(jquery ajax+python fl

前端与后端的数据交互(jquery ajax+python fl

作者: 奔向超级开发者xAI | 来源:发表于2016-06-10 16:31 被阅读31037次

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

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

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

var data = {}
# 如果页面并没有表单,只是input框,请求也只是发送这些值,那么可以直接获取放到data中
data['name'] = $('#name').val()

# 如果页面有表单,那么可以利用jquery的serialize()方法获取表单的全部数据
data = $('#form1').serialize();

$.ajax({
    type: 'POST',
    url: /your/url/,
    data: data,
    dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据
    success: function(data) { # 这里的data就是json格式的数据
    },
    error: function(xhr, type) {
    }
});

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

2. 提交JSON数据

如果要给后端传递json数据,就需要增加content-type参数,告诉后端,传递过来的数据格式,并且需要将data转为字符串进行传递。实际上,服务端接收到后,发现是json格式,做的操作就是将字符串转为json对象。
另外,不转为字符串,即使加了content-type的参数,也默认会转成 name=xx&age=1,使后端无法获取正确的json

# POST一个json数据

var data = {
    “name”: "test",
    "age", 1
}
$.ajax({
    type: 'POST',
    url: /your/url/,
    data: JSON.stringify(data), # 转化为字符串
    contentType: 'application/json; charset=UTF-8',
    dataType: 'json', # 注意:这里是指希望服务端返回json格式的数据
    success: function(data) { # 这里的data就是json格式的数据
    },
    error: function(xhr, type) {
    }
});
后端的数据接收与返回
1. 接收GET请求数据
name = request.args.get('name', '')
age = int(request.args.get('age', '0'))
2. 接收POST请求数据

接收表单数据

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

接收Json数据

data = request.get_json()
get_json的源码.png

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

3. 响应请求

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

from Flask import jsonify

return jsonify({'ok': True})
jsonify源码

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

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

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


post表单数据到服务端.png Post JSON数据到服务端

相关文章

  • 前端与后端的数据交互(jquery ajax+python fl

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

  • 2018-02-08

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

  • flask html文件中的相关操作

    摘要 前端数据与后端数据的交互,从后端获取数据展示到前端 1.挖坑与填坑 实现html的继承 挖坑 使用bloc...

  • python中的ajax

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

  • 前端是个什么鬼?

    前端是做什么的? 开发工程师负责程序研发环节,分为前端和后端 前端负责产品界面展现与用户交互功能 后端负责数据与接...

  • 你不知道的前后端分离(2)

    上一篇文章前后端分离之交互(1)我们讲到了如何使用JQuery发起ajax请求,从后端接口获取前端需要的数据。JQ...

  • Vue项目使用WebSocket技术

    【基础】为什么使用WebSocket? 前端和后端的交互模式最常见的就是前端发数据请求,后端响应传输数据之前端进行...

  • protobuf基础教程

    前端protobuf入门 此文只讲述web前端与后端使用protobuf进行数据交互的基础与入门教学,更加详细的内...

  • 前后端交互如何保证安全性?

    前言 web与后端,andorid与后端,ios与后端,像这种类型的交互其实就属于典型的前端与后端进行交互。在与B...

  • HTTP协议、存储、Ajax

    前后端数据交互与 HTTP 协议 1、前后端通信是什么(1)前端和后端交互的过程(2)浏览器和服务器之间数据交互的...

网友评论

  • Oo莫莫oO:有没有完整例子代码
  • 丫丫哆来咪:想问一下,表单数据和JSON数据可以一起提交吗,也就是一个REQUEST里面可以又有表单又有JSON吗
    奔向超级开发者xAI:应该是不行的,后端是根据Content-Type来判断body中的内容格式的,表单要填:application/x-www-form-urlencoded JSON要填application/json

    而且实际开发中一般也不会这么做,如果是给别人提供接口的话,要么表单要么json,不然别人也没法用。

    如果非要在json之外加点别的数据,建议作为url的参数,如xxx.com/?name=yy, json数据正常post,完美
  • Dracove:请问大神用的什么IDE开发的啊
    奔向超级开发者xAI:pycharm 和 vscode
  • 4301d1687697:有人在吗 ?<script type="text/javascript">
    function register() {
    $.ajax({
    //几个参数需要注意一下
    type: "POST",//方法类型
    dataType: "json",//预期服务器返回的数据类型
    url: "/a" ,//url
    data: $('#form1').serialize(),
    success: function (result) {
    console.log(result);//打印服务端返回的数据(调试用)
    if (result.resultCode == 200) {
    alert("SUCCESS");
    }
    ;
    },
    error : function() {
    alert("异常!");
    }
    });
    }
    </script>
    这样写有问题吗?后端要怎么接收这样的数据
    奔向超级开发者xAI:@Iceblue_2a3a 这就是给后端提及post表单,文中有写
  • 25d9841a5ea0:而且服务器判断前端登录的用户是否为新用户是否可以称为后台数据(后端数据)呢
  • 25d9841a5ea0:您好,请教一下,比如说登录,前端点击登录,填写相关数据,那判断这个用户是否为新用户就要服务器判断了,但服务器具体是涉及哪些判断的呢?
    奔向超级开发者xAI:一般来说,登录就是向后端发送用户名和密码,后端接收到后,就去数据库中验证用户名和密码是不是正确,验证通过即登录成功
  • 帅帅哒昵称妹子: $(document).ready(function(){

    $('#commitData').click(function () {

    $.ajax({
    url: '/case/batch/add/',
    type: 'POST',
    data: JSON.stringify(tableToJson()),
    contentType: 'application/json; charset=UTF-8',
    dataType: 'json',
    success: function (data) {
    },
    error: function(xhr, type) {
    }

    });
    });
    });


    我这里这样写了,但是后端收到的的还是
    projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=&step=&expectResult=&projectName=1&module=1&caseName=w&step=&expectResult=
    奔向超级开发者xAI:怀疑你的tableToJson()写的有问题,可能本身返回的就是字符串

本文标题:前端与后端的数据交互(jquery ajax+python fl

本文链接:https://www.haomeiwen.com/subject/riyddttx.html