主要讨论两个问题,第一个是关于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>

案例截图:

返回结果:

参考:dumps与jsonify区别 ajax异步函数参考

Flask(python)异步(ajax)返回json格式数据的更多相关文章

  1. springmvc通过ajax异步请求返回json格式数据

    jsp 首先创建index.jsp页面 <script type="text/javascript"> $(function () { $("#usernam ...

  2. var dataObj=eval("("+data+")");//转换为json对象(解决在ajax返回json格式数据的时候明明正确的获取了返回值但是却就是进不去success方法的问题。格式错误)

    一,原理 1.1,解析1 将字符串解析为JavaScript代码,比如:var a = "alert('a');";这里的a就只是一个字符串而已,输出的话也是alert(a);这句 ...

  3. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  4. 使用getJSON()方法异步加载JSON格式数据

    使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery. ...

  5. 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- ...

  6. WebService返回json格式数据供苹果或者安卓程序调用

    1.新建一个WebService. 2. /// <summary> /// DemoToJson 的摘要说明 /// </summary> [WebService(Names ...

  7. Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  8. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  9. 返回json格式数据乱码

    本文为博主原创,未经允许不得转载: 原本返回json格式数据的代码: @ResponseBody @RequestMapping(value = "getListByTime", ...

  10. ajax请求后台,返回json格式数据,模板!

    添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...

随机推荐

  1. find xargs 简单组合使用

    简单总结下,留作自己以后拾遗...... 一.find xargs 简单组合 ## mv 小结find ./ -type f -name "*.sh"|xargs mv -t /o ...

  2. cdh zookeeper 不断拒绝连接

    测试hiveserver2高可用的时候,需要登录zookeeper检查hiveserver2是否在zookeeper中注册 执行 zookeeper-client 不断的拒绝连接 -- ::, [my ...

  3. Vue项目中,要保证某个部分的高度,应该怎么设置

    .icons overflow: hidden height: padding-bottom: % background: green

  4. liunx redis集群添加密码

    第一种方法: 修改每个节点redis.conf配置文件: masterauth 123456 requirepass 123456 各个节点的密码都必须一致,否则Redirected就会失败 重新启动 ...

  5. VMware安装CentOS7系统

  6. jq-css、class、属性操作

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. Gerapy框架的使用

    Gerapy 基于Scrapy,Scrapyd,Scrapyd-Client,Scrapyd-API,Django和Vue.js的分布式爬虫管理框架. 支持 Gerapy是在Python 3.x上开发 ...

  8. 14.并发与异步 - 3.C#5.0的异步函数 -《果壳中的c#》

    14.5.2 编写异步函数 private static readonly Stopwatch Watch = new Stopwatch(); static void Main(string[] a ...

  9. git 回滚远程服务端master的代码

    1.先备份版本 git checkout master git pull git branch master_backup //备份一下这个分支当前的情况 git push origin master ...

  10. 当linux报 “-bash: fork: 无法分配内存”

    “-bash: fork: 无法分配内存”,发现连了好多终端,然后断开了一个终端,然后这边终端可以敲命令了 [root@172.16.31.105 /home/www/test]# free -m  ...