需要从AJAX调用中加载动态生成的字符串列表(Flask后端)

0 投票
1 回答
515 浏览
提问于 2025-04-18 00:55

我觉得标题已经说得很清楚了,简单来说,这是我的flask/python后端。

@app.route('/failing_jobs/', methods= ['GET' , 'POST'])
def failing_jobs():

    real_list = generate_failing_jobs() #normal method that will generate a list
    dummy_list = ['jobA', 'jobB', 'jobC']
    return dummy_list

现在在我的模板里,我有一个脚本

<!-- necesary j-Query includes above this point-->
<script type= "text/javascript">
    $(document).ready(function(){
        alert("Before the ajax call");
        $.ajax({
            url : "/failing_jobs/",
            type : "GET",
            success : function(data){
                alert(data);
            }
        });
        alert("After the ajax call");
    });
</script>

中间的“alert”语句从来没有被执行(虽然它两边的语句是执行的),而在我的后端,我有

"TypeError: 'list' object is not callable"

有没有人知道我怎么才能输出一个列表,还是说我需要把它拆开,或者其他什么方法?我该如何通过ajax加载一个动态生成的列表?

1 个回答

1

你必须返回一个字符串、一个元组(里面可以包含一个字符串,还有可选的状态码和头信息)或者一个响应对象。这里不可以返回一个列表。可以使用 jsonify() 来代替(把列表命名为):

from flask import jsonify

@app.route('/failing_jobs/', methods= ['GET' , 'POST'])
def failing_jobs():
    real_list = generate_failing_jobs() #normal method that will generate a list
    return jsonify(jobs=real_list)

在 jQuery 这边使用:

$.ajax({
    url : "/failing_jobs/",
    type : "GET",
    contentType: "application/json",
    success : function(data){
        alert(data.jobs);
    }
});

撰写回答