关于前后端json数据的发送与接收详解


Posted in Javascript onJuly 30, 2017

前言

最近因为笔者后台使用的是flask框架接收和前端使用的是原生的JavaScript和jQuery的ajax发送,能力有限,在此仅写下我开发项目过程中所得,分享出来供大家参考学习,下面话不多说,跟着小编来一起看看详细的介绍:

一、flask中的json数据接收

1、利用flask的request.form.get()方法

Python后台部分代码

from flask import Flask
from flask import jsonify
from flask import request
import json
...

# 登录
@app.route("/flask/login", methods=['POST'])
def login():
 data_ = request.form.get('data')
 data = json.loads(data)
 username = data['username']
 password = data['password']
 rem = False
 if data['remember']:
  rem = True
 return jsonify({"login": Login.login(username, password, rem)}) # 返回布尔值

2、 利用flask的request.get_data()方法

Python后台代码

from flask import Flask
from flask import jsonify
from flask import request
import json
...

# 登录
@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_data()
 data = json.loads(data)
 username = data['username']
 password = data['password']
 rem = False
 if data['remember']:
  rem = True
 return jsonify({"login": Login.login(username, password, rem)}) # 返回布尔值

3、利用flask的request.get_json()方法

Python后台代码

from flask import Flask
from flask import jsonify
from flask import request

...

# 登录
@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_json()
 username = data['username']
 password = data['password']
 rem = False
 if data['remember']:
  rem = True
 return jsonify({"login": Login.login(username, password, rem)}) # 返回布尔值

二、前端发送json数据

1、原生XMLHttp发送

function login() {
 var username =document.getElementById("username").value;
 var password = document.getElementById("password").value;
 var remember =document.getElementById("remember").checked;
 var xmlhttp;
 if (window.XMLHttpRequest)
 {
  // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
  xmlhttp=new XMLHttpRequest();
 }
 else
 {
  // IE6, IE5 浏览器执行代码
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
 {
  if (xmlhttp.readyState===4 && xmlhttp.status===200)
  {
   ...
  }
 };

 xmlhttp.open("POST","/flask/login",true);
 xmlhttp.setRequestHeader("Content-type","application/json");
 // 后面这两部很重要,我看网上很多都是使用xmlhttp.send("username="+username+"&password="+"),这样接收还要解析一番感觉还是直接发送以下格式的好些
 var data = {
  "username": username
  "password": password
  "remember": remember
 };
 var data_json = JSON.stringify(data);
 xmlhttp.send(data_json);
}

附:json数据解析

var text = xmlhttp.responseText;
 // 通过eval() 方法将json格式的字符串转化为js对象,并进行解析获取内容
 var result = eval("("+text+")");
 if (result) {
    
  } else {
    alert("请输入正确的用户名和密码");
   }

2、ajax发送

$(document).ready(function () {
 var data = {
 "username": "adamin",
 "password": "123456789",
 "remember": true
 }
 $.ajax({
  url: "/flask/login",
  type: "POST",
  data: data,
  success: function () {
   
  }
 })
 })

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Javascript 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
Angular 4.X开发实践中的踩坑小结
Jul 04 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
JS设计模式之惰性模式(二)
Sep 29 Javascript
jQuery each和js forEach用法比较
Feb 27 jQuery
ES6 class的应用实例分析
Jun 27 Javascript
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
node+vue实现文件上传功能
May 28 Javascript
jquery easyui如何实现格式化列
Jul 30 #jQuery
微信小程序对接七牛云存储的方法
Jul 30 #Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 #Javascript
Vue自定义指令详解
Jul 28 #Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 #Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 #Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 #Javascript
You might like
深入php list()函数的详解
2013/06/05 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
js验证表单第二部分
2006/11/25 Javascript
用jquery来定位
2007/02/20 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python opencv实现证件照换底功能
2019/08/19 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python计算n的阶乘的方法代码
2019/10/25 Python
Python实现验证码识别
2020/06/15 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
weblogic面试题
2016/03/07 面试题
毕业生护理专业个人求职信范文
2014/01/04 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
优良学风班总结材料
2014/02/08 职场文书
老公保证书范文
2014/04/29 职场文书
热门专业求职信
2014/05/24 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs