裑躰哙蔂菿 2023-04-13 12:22 采纳率: 81.5%
浏览 16
已结题

python服务器如何通过一个get请求返回多个值?

使用的是flask服务器,现在从前端传来一个get请求:classID=D615。
现在服务器端从名为“RSCC”的数据库中选取2张表(表名分别为score和teacher),分别查找对应的内容。对应的查询内容为:
“select 姓名,语文,数学 from RSCC.score where class="classID"”以及“select 班主任姓名 from RSCC.teacher where class="classID"”
将以上查询结果分别赋值为sc="{"姓名":"张三","语文":89,"数学":88}"以及nm="{"班主任姓名":"李四"}"
现在的问题是,如何一次性将sc和nm传回前端,以及前端如何用JS来一次性接收到这两个JSON字符串?

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-04-13 12:47
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    在 Flask 中,可以使用 jsonify 函数将多个 JSON 字符串打包成一个 HTTP 响应返回给前端。同时,前端可以使用 XMLHttpRequest 对象来发送 GET 请求并接收服务器返回的 JSON 数据。

    下面是一个示例的 Flask 代码,用于从名为“RSCC”的数据库中选取 score 和 teacher 两张表,分别查询对应的内容,并将查询结果打包成 JSON 字符串返回给前端:

    from flask import Flask, jsonify
    import sqlite3
    
    app = Flask(__name__)
    
    @app.route('/get_data')
    def get_data():
        class_id = request.args.get('classID')
        conn = sqlite3.connect('RSCC.db')
        cursor = conn.cursor()
        cursor.execute('select 姓名,语文,数学 from score where class=?', (class_id,))
        score_data = cursor.fetchone()
        sc = {
            '姓名': score_data[0],
            '语文': score_data[1],
            '数学': score_data[2],
        }
        cursor.execute('select 班主任姓名 from teacher where class=?', (class_id,))
        teacher_data = cursor.fetchone()
        nm = {
            '班主任姓名': teacher_data[0],
        }
        conn.close()
        return jsonify({'score': sc, 'teacher': nm})
    

    在上面的代码中,get_data 函数首先从 GET 请求参数中获取 classID,然后连接数据库,分别查询 score 和 teacher 两张表中对应的内容,并将查询结果分别赋值为 scnm。最后,使用 jsonify 函数将这两个 JSON 字符串打包成一个 HTTP 响应返回给前端。

    在前端,可以使用以下 JavaScript 代码发送 GET 请求并接收服务器返回的 JSON 数据:

    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/get_data?classID=D615', true);
    xhr.onload = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);
            var score_data = response.score;
            var teacher_data = response.teacher;
            console.log(score_data); // 输出 {"姓名":"张三","语文":89,"数学":88}
            console.log(teacher_data); // 输出 {"班主任姓名":"李四"}
        }
    };
    xhr.send();
    

    在上面的代码中,XMLHttpRequest 对象首先发送一个 GET 请求到 /get_data?classID=D615,然后在接收到服务器返回的响应后,使用 JSON.parse 函数将 JSON 字符串解析成 JavaScript 对象,并将其输出到控制台。由于服务器返回的是一个包含两个 JSON 字符串的 JSON 对象,因此可以通过 response.scoreresponse.teacher 来分别获取这两个 JSON 对象。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月13日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部