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

Quiero enviar los datos de esta forma al servidor a través de sockets web, estoy usando socket.io.¿Cómo paso los datos del formulario a través de un websocket? (socket.io)

¿Cuál es la mejor manera de lograr esto?

+0

Por qué WebSocket aquí? Esta es una solicitud de cliente-servidor, por lo que la solicitud http normal funcionaría. –

Respuesta

9

Se necesitaría utilizar .serialize() en el formulario de esta manera:

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

pasan luego de que el WebSocket. En el lado Node.js, se puede obtener un objeto JS posterior mediante el uso de querystring.parse:

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

¿funciona esto con la carga de archivos? –

-1

puede probar esta

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

buena suerte :)

+0

Agregue alguna explicación con su código, puede ayudar a otros en el futuro. [responder] – cosmoonot

Cuestiones relacionadas