Flask(python)异步(ajax)返回json格式数据
主要讨论两个问题,第一个是关于json.dumps 与jsonify区别,第二个是几种异步的区别(见jQuery中的$.getJSON、$.ajax、$.get、$.post的区别)。
json.dumps()和jsonify()的区别
- 使用方法不同:
dumps和loads方法,来自json模块,而json模块是python中的,可以直接导入:
- import json
而jsonify是flask封装的扩展包
- from flask import jsonify
- 作用不同:
①dumps()和loads()
json.dumps():把字典转成json字符串,
json.loads():把json字符串转成字典
他们操作的都是变量(变量是存储在内存中的)。
②jsonify
字典转成json字符串
- 效果不同:
①json.dumps()查看响应信息(Content-Type:响应内容的类型):Content-Type:text/heml;charset=utf-8
②jsonify查看浏览器响应信息(Content-Type:响应内容的类型):Content-Type: application/json
相关代码如下:
新建flask项目,建立一个app.py文件,代码如下:
- # coding: utf-8
- from flask import Flask, render_template, url_for, request, json, jsonify
- from flask_bootstrap import Bootstrap
- app = Flask(__name__)
- app.config['JSON_AS_ASCII'] = False
- @app.route('/form_data', methods=['GET', 'POST'])
- def form_data():
- if request.method=='GET':
- username = request.args.get("username")
- #dumps和loads方法,来自json模块,而json模块是python中的,可以直接导入:
- #而jsonify是flask封装的扩展包
- return jsonify({'status': '', 'username': username, 'errmsg': '登录成功!'})
- else:
- username = request.form['username']
- return jsonify({'status': '', 'username': username, 'errmsg': '登录成功!'})
- @app.route('/')
- def index():
- return render_template('test.html')
- if __name__ == '__main__':
- app.run(debug=True)
再在templates文件夹下新建test.html文件,代码如下:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <form action='{{ url_for('form_data') }}' method="POST">
- <input name="username" type="text"/>
- <input type="submit">
- </form>
- <Br>
- <input type="button" name="sendjson" value="提交" id="sendjson">
- <div id="myDiv"></div>
- <script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>
- <script>
- $("#sendjson").click(function () {
- params = {"username": "lisi"}
- {#$.getJSON("{{ url_for('form_data') }}",params, function (result) {#}
- {# $("#myDiv").append("hello world1");#}
- {# console.log(obj.username + "<br>");#}
- {# });#}
- {#$.ajax({#}
- {# "url": "{{ url_for('form_data') }}",#}
- {# "type": "POST",#}
- {# "data": params,#}
- {# "success": function (obj) {#}
- {# $("#myDiv").append("hello world")#}
- {# console.log(obj.username + "<br>")#}
- {# },#}
- {# "error": function (obj) {#}
- {# console.log(obj)#}
- {# },#}
- {# "dataType": "json",#}
- {# "async": true#}
- {# });#}
- {#$.get("{{ url_for('form_data') }}", params, function (obj) {#}
- {# $("#myDiv").append("hello world")#}
- {# console.log(obj.username + "<br>");#}
- {# }, "json");#}
- $.post("{{ url_for('form_data') }}", params, function (obj) {
- $("#myDiv").append(obj.username + "<br>")
- console.log(obj);
- }, "json");
- })
- {#$('#sendjson').bind('click', submit_form);#}
- </script>
- </body>
- </html>
案例截图:
返回结果:
Flask(python)异步(ajax)返回json格式数据的更多相关文章
- springmvc通过ajax异步请求返回json格式数据
jsp 首先创建index.jsp页面 <script type="text/javascript"> $(function () { $("#usernam ...
- var dataObj=eval("("+data+")");//转换为json对象(解决在ajax返回json格式数据的时候明明正确的获取了返回值但是却就是进不去success方法的问题。格式错误)
一,原理 1.1,解析1 将字符串解析为JavaScript代码,比如:var a = "alert('a');";这里的a就只是一个字符串而已,输出的话也是alert(a);这句 ...
- 使用jQuery发送POST,Ajax请求返回JSON格式数据
问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...
- 使用getJSON()方法异步加载JSON格式数据
使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...
- springmvc4.0配置ajax请求json格式数据
1.导入相关jar包:jackson-annotation-2.5.4.jar,jackson-core-2.5.4.jar,jackson-databind-2.5.4.jar. 2.spring- ...
- WebService返回json格式数据供苹果或者安卓程序调用
1.新建一个WebService. 2. /// <summary> /// DemoToJson 的摘要说明 /// </summary> [WebService(Names ...
- Django 1.8.11 查询数据库返回JSON格式数据
Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- 返回json格式数据乱码
本文为博主原创,未经允许不得转载: 原本返回json格式数据的代码: @ResponseBody @RequestMapping(value = "getListByTime", ...
- ajax请求后台,返回json格式数据,模板!
添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...
随机推荐
- POJ 1556 The Doors(线段相交+最短路)
题目: Description You are to find the length of the shortest path through a chamber containing obstruc ...
- django 连接mangodb 操作
django项目连接MySQL需要配置很多东西,连接mango并不需要配置任何.
- 【剑指offer】【python】面试题2~5
使用python实现<剑指offer>面试题ヾ(◍°∇°◍)ノ゙,以此记录. 2_实现Singleton模式 题目:实现单例模式 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含 ...
- drf版本控制 和django缓存,跨域问题,
drf版本控制 基于url的get传参方式 REST_FRAMEWORK={ # "DEFAULT_AUTHENTICATION_CLASSES":["app01.aut ...
- 面试容易问到的Linux问题
1.有没有使用过linux?用来干什么? Linux是一个长时间运行比较稳定的操作系统,我们一般会拿它作为服务器. 一下软件(redis等)没有软件包,需要在linux的C编译环境下编译得到软件包. ...
- 分享一个学习的网站:每天会有大量AI相关的干货(论文分享,行业动态,相关竞赛经验分享等)http://www.deepsmart.ai/
网址:http://www.deepsmart.ai/ 微信公众号如下:
- type=file的inpu美化,自定义上传按钮样式
<div class="div1"> <div class="div2">点击上传</div> <input type ...
- 提取C3D视频特征(官方文档&实践)
C3D Introduction 卷积神经网络(CNN)近年被广泛应用于计算机视觉中,包括分类.检测.分割等任务.这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维).而基于视频的 ...
- 微信小程序--家庭记账本开发--02
代码文件的了解 对于一个程序的开发,代码的了解的必须的,不同的后缀名文件有着不同的作用,通过学习,对于微信小程序开发中的文件有了自己的理解. 文件概述 一个微信小程序一般有有pages文件夹,util ...
- 微信小程序--家庭记账本开发--01
微信小程序的开发准备与开发工具的学习 在这次寒假伊始,临近春节,学习进程有所拉下,现在补上.寻找了好多网站的相关学习视频,包括微信公众平台关于小程序这方面也有好多相关资料供查阅. 1.开发准备: 首先 ...