关于前后端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 选择器 xpath 语法应用
May 13 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
使用js判断当前时区TimeZone是否是夏令时
Feb 23 Javascript
JQuery实现可直接编辑的表格
Apr 16 Javascript
js自定义回调函数
Dec 13 Javascript
js获取新浪天气接口的实现代码
Jun 06 Javascript
javascript中递归的两种写法
Jan 17 Javascript
Vue中mintui的field实现blur和focus事件的方法
Aug 25 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
JavaScript switch语句使用方法简介
Dec 30 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
JavaScript实现点击切换功能
Jan 27 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python简单日志处理类分享
2015/02/14 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
如何写求职信
2014/05/24 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
活动费用申请报告
2015/05/15 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
教师节主题班会方案
2015/08/17 职场文书
2016年教师节感言
2015/12/09 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
Vue如何实现组件间通信
2021/05/15 Vue.js