烧瓶渲染模板重复HTML

时间:2016-12-01 01:32:01

标签: javascript jquery ajax flask

我有一个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(数据)等,但我不明白我在这里做错了什么。

1 个答案:

答案 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调用。

相关问题