2017-08-05 59 views
0

我有一个用户列,我试图通过json和ajax在html文件上输出其所有数据。 我能够从单行返回多列。 但我无法弄清楚如何返回并调用多行。Flask-Json我如何返回多行作为json对象

这是我的代码,还有一些我已经尝试过的评论。

@app.route('/test', methods=['POST', 'GET']) 
def test(): 
    #thisworks 
    works = user.query.filter_by(name = 'foo').first() 
    return jsonify(name = works.name, id = works.id) 

    #BELOW LINES DONT WORK 
    #st = user.query.all() 
    #for i in st: 
    #jsonify(id = st.id[i] , name = st.username[i]) 

另外,我将不得不在这个jQuery中调用for循环或词典中的字典。

请帮我用这个 谢谢。

回答

0

这里的想法是在jsonify之前将所需的所有数据放在列表/数组中。使用 你的例子:

st = user.query.all() 
all_users = [{'name':user.name,'id':user.id} for user in st] 
return jsonify(all_users) 

希望这有助于

要使用jQuery中的结果,你可以做一些这样的事

$.get('mysite.com/users').then(function(response) { // ajax to get users 
    users = response; // save to variable 
    $.each(users, function(key, val) {   // iterate over result 
     console.log(val.id); 
     console.log(val.name) 
    }); 
}); 
+0

谢谢! json数据正在按照它的规格返回。但你也可以帮助我如何从jquery读取数据,因为这不是一个单一的对象,而是多个对象被多个键返回。 – reevkandari

+0

我已经更新了答案,以显示如何在jquery中读取数据。 – sea

0

它看起来像你想建立你的数据结构,然后使用jsonify就可以了。例如:

# create a list of user ids and names 
user_data = [] 
for user in user.query.all(): 
    user_data.append({ 
     'id': user.id, 
     'name': user.name, 
    }) 
return jsonify(user_data) 

有几种方法可以创建该数据结构,但这看起来很清楚。