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

7
<form name="input" action="">
    <input type="text" name="say" /> 
    <input type="submit" value="send" />
</form>

我想通过web sockets发送这个表单中的数据到服务器,我正在使用socket.io。
最佳实现方式是什么?

为什么要使用WebSocket?这是客户端-服务器请求,因此普通的HTTP请求也可以工作。 - Andrey Sidorov
如果表单更改了服务器上的状态,那么能够将这些更改发送给客户端而无需客户端长轮询服务器会是很好的。 :) - kiwicomb123
2个回答

13

您需要在表单上使用.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);

-3

你可以试试这个

    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") ) );

祝你好运 :)


2
在你的代码中加入一些解释,这可以帮助其他人在未来理解。 - cosmoonot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接