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

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

如何使用网络套接字访问发送到 Flask 的表单数据?我在 google chrome 开发人员工具->控制台中收到无效的帧头。

从我的 javascript 代码中提取:

var form_data = new FormData($('#my_form')[0]); 

socket.emit('handle_form',{data:form_data});

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

request.form 抛出相同的错误“无效的帧头”

还有一个问题,使用 web sockets 进行表单提交并作为 ajax 的完整替代品好吗?

这不像 Flask-SocketIO 有效。

当你 socket.emit 做某事时,你会用回调来处理它。

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

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

它可以作为表单提交的替代品,但我认为它不是一个好的替代品。 Websockets 不是无状态的,它们难以扩展并且基本上绑定到服务器。当然它有一些解决方法,但它不像有据可查的 HTTP 服务器缩放。

与其发送仅客户端构造的 FormData 对象,不如构建一个普通字典并发送它,因为所有数据都在 [=16= 中来回传输] 序列化为 JSON.

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