首页 > 解决方案 > 为什么烧瓶 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)

标签: flaskfetchjsonify

解决方案


data是未定义的,因为第一个then不返回任何东西。要么让它返回response.json(),要么将第二个中的所有内容then移到第一个并替换dataresponse.json().


推荐阅读