关于前后端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 相关文章推荐
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
May 21 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
Jun 01 Javascript
JS中的三个循环小结
Jun 20 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
在vue中配置不同的代理同时访问不同的后台操作
Sep 11 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
写一个用户在线显示的程序
2006/10/09 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
python 字典的打印实现
2019/09/26 Python
python 从list中随机取值的方法
2020/11/16 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
上班睡觉检讨书
2014/01/09 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
我的中国心演讲稿
2014/09/04 职场文书
党支部鉴定意见
2015/06/02 职场文书
企业年会祝酒词
2015/08/11 职场文书