2017-08-05 85 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) 

有幾種方法可以創建該數據結構,但這看起來很清楚。