2011-05-29 122 views
5
<form name="input" action=""> 
    <input type="text" name="say" /> 
    <input type="submit" value="send" /> 
</form> 

我想通过网络套接字发送这种形式的数据到服务器,我使用的是socket.io。如何通过websocket传递表单数据? (socket.io)

达到此目的的最佳方法是什么?

+0

为什么这里的WebSocket?这是一个客户端 - 服务器请求,所以正常的http请求会起作用。 – 2011-05-30 02:13:41

回答

9

你需要在表格上使用.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); 
+0

这个文件上传工作吗? – 2017-12-29 11:04:50

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

好运:)

+0

用你的代码添加一些解释,它可以在将来帮助别人。 [回答] – cosmoonot 2017-04-20 06:08:20