关于前后端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 相关文章推荐
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
使用jquery插件实现图片延迟加载技术详细说明
Mar 12 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
JS冒泡事件的快速解决方法
Dec 16 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
servlet+jquery实现文件上传进度条示例代码
Jan 25 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
D3.js实现拓扑图的示例代码
Jun 30 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
js实现筛选功能
2020/11/24 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
python创建和删除目录的方法
2015/04/29 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
实例讲解Python爬取网页数据
2018/07/08 Python
python远程邮件控制电脑升级版
2019/05/23 Python
python 标准差计算的实现(std)
2019/07/29 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
10条PHP编程习惯
2014/05/26 面试题
保送生自荐信范文
2013/10/06 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
如何拟写通知正文?
2019/04/02 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Go语言中的UTF-8实现
2021/04/26 Golang