烧瓶和 D3.js 错误 - 未捕获(在承诺中)语法错误:JSON中位置0处出现意外的令牌<



我在发送回我的JavaScript文件时遇到了问题,该文件使用d3.json承诺来查询Flask路由,如下所示:

ds.json("/").then(function(data){
console.log(data);
});

我的app.py设置如下:

from flask import Flask, render_template, redirect
from flask_pymongo import PyMongo
import pymongo
app = Flask(__name__)
# Use flask_pymongo to set up mongo connection
app.config["MONGO_URI"] = "mongodb://localhost:27017/housing_db"
mongo = PyMongo(app)
@app.route("/")
def index():
data = mongo.db.price_index.find()
return render_template("index.html", data = data)

我的index.html有以下脚本标记:

<script src="{{ url_for('static', filename='js/d3.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/test.js') }}"></script>

我的问题是,当我启动Flask应用程序并检查控制台时,我会得到以下错误:

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
Promise.then (async)

文件夹结构正确,并遵循烧瓶所需的结构:

|-->flask_app.py
|-->static
|-->css
|-->bootstrap.min.css
|-->styles.css
|-->js
|-->jquery-3.1.1.min.js
|-->bootstrap.min.js
|-->script.js
|-->templates
|-->index.html

所以我不确定为什么D3不能像预期的那样获得数据。有人在使用Flask时遇到过这个问题吗?这里的大多数问题都是基于React.js的。

您正在返回一个html模板

return render_template("index.html", data = data)

但是您正在尝试加载json。。。因此SyntaxError: Unexpected token < in JSON at position 0

因为以<开头不是有效的json。

如果你想要json,那么你需要返回有效的json而不是html。

大概只是。。。

return JSON.stringify(data)

最新更新