关于前后端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 相关文章推荐
JS获取网页属性包括宽、高等等
Apr 03 Javascript
jQuery往返城市和日期查询实例讲解
Oct 09 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 Javascript
JS轻量级函数式编程实现XDM三
Jun 16 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(8) php 数组
2010/03/05 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php 类自动载入的方法
2015/06/03 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python uuid模块使用实例
2015/04/08 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
利用python实现汉诺塔游戏
2021/03/01 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
岗位竞聘书范文
2014/03/31 职场文书
经管应届生求职信范文
2014/05/18 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python