3

如何使用 Web 套接字访问发送到 Flask 的表单数据?我在谷歌浏览器开发者工具->控制台中收到无效的帧头。

从我的 javascript 代码中提取:

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

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

我将如何从 flask 访问 my_form 中的“title”字段?

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

还有一个问题,使用 Web 套接字提交表单并完全替代 ajax 是否很好?

4

2 回答 2

2

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

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

于 2016-04-16T17:07:39.207 回答
0

它不像Flask-SocketIO作品。

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

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

request.form在这种情况下你没有。

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

于 2016-04-16T15:36:47.193 回答