Ajax成功函数中response.content返回undefined的Flask问题求助
问题排查:Ajax success中response.content返回undefined
你的核心问题是后端POST请求返回的是完整HTML页面,而非前端Ajax期望的JSON数据,导致前端无法读取response.content。
原因分析
当前后端不管是GET还是POST请求,最终都返回render_template('index.html', content=content),这会输出整个HTML页面。而前端Ajax发送请求时,期望后端返回JSON格式的数据,所以response实际是整个HTML文档的字符串,自然没有content属性,打印出来就是undefined。
解决办法
修改后端代码,让POST请求返回JSON格式的内容,GET请求依然返回页面模板:
from flask import Flask, render_template, request, jsonify app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': content = request.get_json().get('content') print("request" + content) if content == 'Hello! flask': content = 'Hello! world' print(content + "1") else: content = 'Hello! flask' print(content + "2") # POST请求返回JSON数据 return jsonify({'content': content}) else: content = 'Hello! flask' print(content + "3") # GET请求返回页面模板 return render_template('index.html', content=content) if __name__ == '__main__': app.run(debug=1)
前端代码无需修改,因为已经正确设置了contentType: 'application/json',并且发送的是JSON格式的请求体,后端也用request.get_json()正确解析了数据。修改后,按回车键就能正常交替显示文本了。
内容的提问来源于stack exchange,提问作者Avirup Chakraborty
相关产品推荐
相关产品推荐

