关于前后端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 Clone Bug解决代码
Dec 22 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
Apr 15 Javascript
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
推荐8款jQuery轻量级树形Tree插件
Nov 12 Javascript
js表头排序实现方法
Jan 16 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
详解Vue 2.0封装axios笔记
Jun 22 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
seajs下require书写约定实例分析
May 16 Javascript
小程序云开发初探(小结)
Oct 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
一个程序下载的管理程序(一)
2006/10/09 PHP
实用函数8
2007/11/08 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
php实现网站留言板功能
2015/11/04 PHP
XmlUtils JS操作XML工具类
2009/10/01 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
python脚本实现验证码识别
2018/06/07 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
自荐书格式
2013/12/01 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
大学生学习计划书
2014/09/15 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
新郎结婚感言
2015/07/31 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
Go 语言结构实例分析
2021/07/04 Golang
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers