如何访问使用websocket发送的烧瓶中的formData?Flask SocketIO

How to access formData in flask sent using websockets?Flask-SocketIO

本文关键字:formData SocketIO Flask 何访问 访问 websocket      更新时间:2023-09-26

如何使用web套接字访问发送到Flask的表单数据?我在谷歌chrome开发者工具中收到无效的帧头->安慰

摘录自我的javascript代码:

var form_data = new FormData($('#my_form')[0]); 
socket.emit('handle_form',{data:form_data});

如何从烧瓶访问my_form中的"title"字段?

request.form抛出相同的错误";无效的帧头";

还有一个问题,使用web套接字进行表单提交并作为ajax的整体替代品是否好?

您应该构建一个简单的字典并发送它,而不是发送FormData对象,因为在Socket.IO中来回传输的所有数据都被序列化为JSON。

然后在服务器上,您将得到一个dict,它作为参数发送到您的套接字回调函数。有关如何将表单数据发送到服务器的想法,请参阅此示例。

它不像Flask-SocketIO那样工作。

当你socket.emit某个东西时,你会用回调来处理它。

@socketio.on('handle_form')
def handle_form_callback(data):
    print('received message: ' + data)

在这种情况下,您没有request.form

它可以作为表单提交的替代品,但我认为它不是一个好的替代品。Websocket不是无状态的,它们很难扩展,并且本质上绑定到服务器。当然,它有一些变通方法,但它不像有充分记录的HTTP服务器扩展。