裑躰哙蔂菿 2023-04-13 20: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 20: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月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 准备学习小程序搭建,谁能手把手的教我啊?
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥100 AT89C52单片机C语言调试之后再回答
  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)