我正在使用flask和python来构建一个Web应用程序。 我在python中有一个json可解析的类
class uItem:
itemCount = 0
def __init__(self, id, name):
self.id = id
self.name = name
我需要从html
访问该类的对象列表这是我创建对象并使它们成为json可解析的地方
from delClass import uItem
counter = 0
name = ["proudct1","product2","product3"]
objarray = []
for n in name:
obj = uItem(counter, n)
r = json.dumps(obj.__dict__)
counter = counter + 1
objarray.append(r)
这是我加载索引页面的地方
@app.route('/', methods=['GET', 'POST'])
def main():
return render_template('jsex.html', dlist=objarray)
我收到错误说
参数列表 之后未捕获的SyntaxError:missing)
答案 0 :(得分:0)
显然,这一行是根本原因
var counts = JSON.parse("["{\"id\": 0, \"name\": \"product1\"}", "{\"id\": 1, \"name\": \"product2\"}", "{\"id\": 2, \"name\": \"product3\"}"]");
要解决此问题,请使用flask.jsonify
。
from flask import jsonify
@app.route('/', methods=['GET', 'POST'])
def main():
return jsonify(objarray)
json回归将是这样的:
[
"{\"name\": \"proudct1\", \"id\": 0}",
"{\"name\": \"product2\", \"id\": 1}",
"{\"name\": \"product3\", \"id\": 2}"
]
使用jsonify
后,您不再需要JSON.parse
了。 Ajax get / post的结果都是javascript对象。这是nodejs中javascript的示例代码。
var axios = require('axios');
axios.get('http://localhost:5000').then(function(res){
var data = res.data;
console.log(data);
console.log(typeof(data));
console.log(data[0]);
})
屏幕上的结果:
[ '{"id": 0, "name": "proudct1"}',
'{"id": 1, "name": "product2"}',
'{"id": 2, "name": "product3"}' ]
object
{"id": 0, "name": "proudct1"}