我有一个与JS集成的Flask应用程序。我的app.py文件如下所示:
import urllib
import requests
import time
from es import book
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route("/")
def index():
current_origin = jsonify(book())
return render_template('index.html', current_origin=current_origin)
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True ,port=5000)
相应的JS看起来像这样:
$(document).ready(function() {
console.log("ready!");
$('#try-again').hide();
// gets values from flask
$.ajax({
type: "GET",
url: "/",
success: function(data) {
$('#results').append(data);
console.log(data);
},
error: function(error) {
console.log(error);
}
});
});
控制台正在打印从到的适当数据,es import book
但是呈现的页面只是不断重复HTML而没有数据值(无休止的HTML重复附加到正确的div上,但没有我期望的数据)。我尝试了几种变体,$('#results').append(data)
包括.html(data)、. text(data)等,但是我不明白我在这里做错了什么。
我知道发生了什么事。您需要分离端点以呈现页面并返回AJAX数据。试试这个:
@app.route("/")
def index():
return render_template('index.html')
@app.route("/get_book")
def get_book():
return jsonify(book())
然后更改url
您的AJAX调用的组件:
url: "{{ url_for('get_book') }}",
jsonify()
返回一个Response对象。render_template()
使用jinja呈现html页面。您的代码不断将相同的源HTML文档插入其自身,从而触发无限循环。您应该只使用render_template()
呈现HTML页面和jsonify()来将数据发送到XHR调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句