如何通过 websocket 传递表单数据? (socket.io)

Posted

技术标签:

【中文标题】如何通过 websocket 传递表单数据? (socket.io)【英文标题】:How do I pass form data over a websocket? (socket.io) 【发布时间】:2011-09-04 07:52:38 【问题描述】:
<form name="input" action="">
    <input type="text" name="say" /> 
    <input type="submit" value="send" />
</form>

我想通过网络套接字将这种形式的数据发送到服务器,我正在使用 socket.io。

实现这一目标的最佳方法是什么?

【问题讨论】:

为什么在这里使用 websocket?这是一个客户端-服务器请求,所以正常的 http 请求可以工作。 如果表单更改了服务器上的状态,那么能够将这些更改发送给客户端而不需要客户端长时间轮询服务器会很好。 :) 【参考方案1】:

你可以试试这个

    function getFormData2Object(form)
    var un_array = form.serializeArray();
    var _array = ;
    $.map(un_array, function(n, i)
        if(n.name.indexOf('[') > -1 )
            var array = n.name.match(/\[(.*?)\]/);
            var key = n.name.replace(array[1],"").replace('[',"").replace(']',"");
            if(!_array[key])
                _array[key] = ;
            
            _array[key][array[1]] = n['value'];
        else
            _array[n['name']] = n['value'];
        
    );
    return _array;

socket.emit('blablabla', getFormData2Object( $("form") ) );

祝你好运:)

【讨论】:

在您的代码中添加一些解释,它可以在将来帮助其他人。 How to Answer【参考方案2】:

您需要在表单上使用.serialize(),如下所示:

var formdata = $('form').serialize();

然后通过 websocket 传递它。在 node.js 端,你可以使用 querystring.parse 获取一个 JS 对象:

var querystring = require('querystring');
// Data is the data received from the client
var result = querystring.parse(data);

【讨论】:

以上是关于如何通过 websocket 传递表单数据? (socket.io)的主要内容,如果未能解决你的问题,请参考以下文章

Spring消息传递+安全如何通过websockets登录?

如何通过 Django 通道 WebSocket 传递请求并调用 Django 视图

如何通过jquery将表单数据与图像一起传递? [复制]

如何通过服务器websocket将twilio sms传递到客户端

如何将 $_SESSION 变量传递给 websocket 服务器?

如何保证 websockets 的可靠消息传递?