主要讨论两个问题,第一个是关于json.dumps 与jsonify区别,第二个是几种异步的区别(见jQuery中的$.getJSON、$.ajax、$.get、$.post的区别)。html
json.dumps()和jsonify()的区别
使用方法不一样:
dumps和loads方法,来自json模块,而json模块是python中的,能够直接导入:python
import json
而jsonify是flask封装的扩展包jquery
from flask import jsonify
做用不一样:
①dumps()和loads()ajax
json.dumps():把字典转成json字符串,json
json.loads():把json字符串转成字典flask
他们操做的都是变量(变量是存储在内存中的)。bootstrap
②jsonify浏览器
字典转成json字符串session
效果不一样:
①json.dumps()查看响应信息(Content-Type:响应内容的类型):Content-Type:text/heml;charset=utf-8app
②jsonify查看浏览器响应信息(Content-Type:响应内容的类型):Content-Type: application/json
相关代码以下:
新建flask项目,创建一个app.py文件,代码以下:
#coding: utf-8
from flask importFlask, render_template, url_for, request, json, jsonifyfrom flask_bootstrap importBootstrap
app= Flask(__name__)
app.config['JSON_AS_ASCII'] =False
@app.route('/form_data', methods=['GET', 'POST'])defform_data():if request.method=='GET':
username= request.args.get("username")#dumps和loads方法,来自json模块,而json模块是python中的,能够直接导入:
#而jsonify是flask封装的扩展包
return jsonify({'status': '0', 'username': username, 'errmsg': '登陆成功!'})else:
username= request.form['username']return jsonify({'status': '0', 'username': username, 'errmsg': '登陆成功!'})
@app.route('/')defindex():return render_template('test.html')if __name__ == '__main__':
app.run(debug=True)
再在templates文件夹下新建test.html文件,代码以下:
Title$("#sendjson").click(function () {
params= {"username": "lisi"}
{#$.getJSON("{{ url_for('form_data') }}",params, function (result) {#}
{#$("#myDiv").append("hello world1");#}
{#console.log(obj.username + "
");#}
{#});#}
{#$.ajax({#}
{#"url": "{{ url_for('form_data') }}",#}
{#"type": "POST",#}
{#"data": params,#}
{#"success": function (obj) {#}
{#$("#myDiv").append("hello world")#}
{#console.log(obj.username + "
")#}
{#},#}
{#"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 + "
");#}
{#}, "json");#}
$.post("{{ url_for('form_data') }}", params, function (obj) {
$("#myDiv").append(obj.username + "
")
console.log(obj);
},"json");
})
{#$('#sendjson').bind('click', submit_form);#}
案例截图:

返回结果:
