关于前后端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 过滤not()与filter()实例代码
May 10 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
关于angularJs指令的Scope(作用域)介绍
Oct 25 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
vue axios 在页面切换时中断请求方法 ajax
Mar 05 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
生产制造追溯系统之再说条码打印
Jun 03 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自动识别字符集并完成转码详解
2013/08/02 PHP
smarty表格换行实例
2014/12/15 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python的多重继承的理解
2017/08/06 Python
python matplotlib画图实例代码分享
2017/12/27 Python
python 接口返回的json字符串实例
2018/03/27 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Python实现数值积分方式
2019/11/20 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
python实现画图工具
2020/08/27 Python
仓库管理专业个人的自我评价
2013/12/30 职场文书
服务员岗位职责
2014/01/29 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书