关于前后端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 相关文章推荐
prototype Element学习笔记(篇二)
Oct 26 Javascript
为你的网站增加亮点的9款jQuery插件推荐
May 03 Javascript
映彩衣的js随笔(js图片切换效果)
Jul 31 Javascript
Javascript面向对象扩展库代码分享
Mar 27 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
May 14 jQuery
vue实现简单图片上传
Jun 30 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获取post中的json数据的实现方法
2011/06/08 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
react-router中的属性详解
2017/06/01 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
详解vue 组件
2020/06/11 Javascript
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
党支部换届选举方案
2014/05/08 职场文书
音乐幼师求职信
2014/07/09 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书