flask - 为什么烧瓶 jsonify 返回身份不明?
问题描述
我在前端使用 fetch 将数据发送到我的烧瓶后端,以便进行电影座位预订。整个过程运行良好,直到客户端等待响应,即 "undefined" 。所以,基本上数据库保存数据,唯一的问题是发送给客户端的响应。我使用了 jsonify,它通常可以正常工作。谁能告诉我我错过了什么?提前致谢。
这是JS代码:
function sendReservationToServer() {
const selectedSeats = sessionStorage.getItem('selectedSeats')
const reservation = { userId, selectedSeats, showTimeId, movieHallId }
fetch('/bookSeats', {
method: 'post',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(reservation)
}).then(response => {
response.json()
}).then(data => {
theatreHall.innerHTML = `${data} <br> <a href='/home'>Back to main menu</a>`
console.log(`${data}`)
}).catch(err => infoMsg.textContent = err)
sessionStorage.clear()
}
这是处理请求的烧瓶控制器:
@app.route("/bookSeats", methods=["POST"])
def book_seats():
selected_seats = request.json
user_id = selected_seats.get('userId')
seats = json.loads(selected_seats.get('selectedSeats'))
movie_hall_id = selected_seats.get('movieHallId')
seat_ids = []
showtime_id = selected_seats.get('showTimeId')
for seat in seats:
seat_ids.append(db.session.query(Seat).filter(
Seat.seat_number == seat).filter(Seat.movie_hall_id == movie_hall_id).all()[0].stid)
for seat in seat_ids:
reserved_seat = ReservedSeat(
seat_id=seat, show_time=showtime_id, user=user_id)
db.session.add(reserved_seat)
db.session.commit()
reservation = Reservation(
user=user_id, show_time=showtime_id, number_of_tickets=len(seat_ids))
db.session.add(reservation)
db.session.commit()
message = f'{seats} booked successfully'
return jsonify(message)
解决方案
data
是未定义的,因为第一个then
不返回任何东西。要么让它返回response.json()
,要么将第二个中的所有内容then
移到第一个并替换data
为response.json()
.
推荐阅读
- node.js - Puppeteer - PDF 生成的不同结果(本地 [windows] 与 live [centos])?
- python - 使用 Python Babel 的科学数字格式
- mysql - mysql。在日期之间选择。如果该日期没有值,则返回 0
- python - 带有参数抛出错误的 django href url
- html - 如何指定 web.config 使用本地路径作为 URL 源?
- asp.net - 使用 WinHttpHandler 与 HttpClientHandler 在 Net Framework 上编写的应用程序
- sql - 根据另一列的值在单元格中显示 LISTAGG 值
- apache-spark - 在pyspark中为给定路径编写Dataframe时如何避免随机数?
- python - 在 ShellExecute 中,如何指定页面范围、托盘等打印参数?
- python-2.7 - 我想用机器学习方法解决的情况示例