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

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 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程