我有一个Flask应用程序,我正在与JS集成。我的app.py文件如下所示:
>File "CMain.py", line 511, in loadModel
>self.model = cPickle.load(open(strPath, 'rb'))
>EOFError
并且相应的JS看起来像这样:
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)
控制台正在从$(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);
}
});
});
的调用中打印相应的数据,但渲染的页面只是不断重复HTML而没有数据值(HTML的无限重复附加到正确的div但没有数据我是期待)。我尝试了es import book
的几种变体来包含.html(数据),。text(数据)等,但我不明白我在这里做错了什么。
答案 0 :(得分:0)
我看到发生了什么。您需要分离端点以呈现页面并返回AJAX数据。试试这个:
@app.route("/")
def index():
return render_template('index.html')
@app.route("/get_book")
def get_book():
return jsonify(book())
然后更改AJAX调用的url
组件:
url: "{{ url_for('get_book') }}",
jsonify()
返回一个Response对象。 render_template()
使用jinja呈现html页面。您的代码不断向自身插入相同的源HTML文档,从而触发无限循环。您应该只使用render_template()
呈现HTML页面,使用jsonify()将数据发送到XHR调用。