关于前后端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 相关文章推荐
JavaScript实现动态增加文件域表单
Feb 12 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
JS实现添加,替换,删除节点元素的方法
Jun 30 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
javascript中mouseenter与mouseover的异同
Jun 06 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
js实现黑白div块画空心的图形
Dec 13 Javascript
js实现可爱的气泡特效
Sep 05 Javascript
JavaScript 中的六种循环方法
Jan 06 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
如何用JS实现网页瀑布流布局
Apr 24 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如何透过ODBC来存取数据库
2006/10/09 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
2014过年倒计时示例
2014/01/31 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
javascript 写类方式之九
2009/07/05 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
python的Tqdm模块的使用
2018/01/10 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
一套软件测试笔试题
2014/07/25 面试题
幼儿园新学期寄语
2014/01/18 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
高中学生评语大全
2014/04/25 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
高中学生自我评价范文
2014/09/23 职场文书
工作证明格式范文
2015/06/15 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android