ajax 异步获取返回数据格式,Flask(python)异步(ajax)返回json格式数据

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

案例截图:

a98328b87f4c48d3b44670f231eaa59a.png

返回结果:

a98328b87f4c48d3b44670f231eaa59a.png