使用的是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字符串?
该回答通过自己思路及引用到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 两张表中对应的内容,并将查询结果分别赋值为 sc
和 nm
。最后,使用 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.score
和 response.teacher
来分别获取这两个 JSON 对象。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话: