[英]Return JSON object to View with Flask and Ajax
我正在嘗試使用AJAX將python字典返回到視圖並從JSON文件讀取,但是到目前為止,我只返回了[object Object],[object Object]
...
如果檢查網絡流量,我確實可以看到正確的數據。
這就是我的代碼的樣子。 我有一個基於所選ID的類和方法(請求參數方法),將打印特定數據。 它從python任意獲取數據。 問題不在這里,已經測試過了。 但以防萬一我將其鏈接。
#創建定向程序的方法-以防萬一#
def getCourselist_byClass(self, classid):
"""
Getting the courselist by the class id, joining the two tables.
Will only get data if both of them exist in their main tables.
Returning as a list.
"""
connection = db.session.connection()
querylist = []
raw_sql = text("""
SELECT
course.course_id,
course.course_name
FROM
course
WHERE
EXISTS(
SELECT 1
FROM
class_course_identifier
WHERE
course.course_id = class_course_identifier.course_id
AND EXISTS(
SELECT 1
FROM
class
WHERE
class_course_identifier.class_id = class.class_id
AND class.class_id = :classid
)
)""")
query = connection.engine.execute(raw_sql, {'classid': classid})
for column in query:
dict = {
'course_id' : column['course_id'],
'course_name' : column['course_name']
}
querylist.append(dict)
return querylist
@main.route('/task/create_test')
def get_courselist():
#objects
course = CourseClass()
class_id = request.args.get('a', type=int)
#methods
results = course.getCourselist_byClass(class_id)
return jsonify(result=results)
這是輸入字段以及應該在哪里鏈接數據的樣子。
<input type="text" size="5" name="a">
<span id="result">?</span>
<p><a href="javascript:void();" id="link">click me</a>
然后我這樣稱呼它
<script type=text/javascript>
$(function() {
$('a#link').bind('click', function() {
$.getJSON("{{ url_for('main.get_courselist') }}", {
a: $('input[name="a"]').val()
}, function(data) {
$("#result").text(data.result);
});
return false;
});
});
</script>
但是每次我在該字段中輸入ID號時,我都會獲得正確的數據。 但格式不正確。 相反,它像[object Object]一樣打印
資料來源,並以此指南為靈感: flask ajax示例
flask.json.jsonify
的API描述表明它需要關鍵字參數。 您實際上想要執行的操作似乎是對包含字典的列表對象進行序列化,您是否嘗試過flask.json.dumps
呢? 假設您已經導入了dumps
符號,而不是您的jsonify
調用,您可以嘗試:
return dumps(results)
服務器返回的數據類似於: {result: [{course_id: 'xxx', course_name: 'xxx'}]}
,其中data.result
是一個JS數組。
當您將其設置為$("#result").text()
,JS將數組轉換為字符串,因此結果為[object Object]
。
您應該遍歷數組以構造一個字符串,然后在DOM中設置該字符串,例如:
courseStr = data.result.map(function(course) {return course.course_id + '-' + course.course_name; }).join(',');
$("#result").text(courseStr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.