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

时间:2016-04-16 05:27:40

标签: javascript flask websocket socket.io flask-socketio

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

从我的javascript代码中提取:

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

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

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

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

还有一个问题,使用网络套接字进行表单提交以及作为ajax的完整替代是否合适?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

Flask-SocketIO不同。

当你socket.emit某事时,你可以通过回调处理它。

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

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

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