Saltar al contenido

Cómo enviar un objeto JSON usando datos de formulario html

Te traemos el arreglo a este atasco, al menos eso esperamos. Si tienes preguntas coméntalo, que sin dudarlo te responderemos

Solución:

Obtener datos completos del formulario como array y json lo stringifican.

var formData = JSON.stringify($("#myForm").serializeArray());

Puedes usarlo más tarde en ajax. O si no está usando ajax; póngalo en un área de texto oculta y páselo al servidor. Si estos datos se pasan como json string a través de datos de formulario normales, entonces debe decodificarlo usando json_decode. A continuación, obtendrá todos los datos en un array.

$.ajax(
  type: "POST",
  url: "serverUrl",
  data: formData,
  success: function(),
  dataType: "json",
  contentType : "application/json"
);

HTML no proporciona ninguna forma de generar JSON a partir de datos de formulario.

Si realmente desea manejarlo desde el cliente, entonces tendría que recurrir al uso de JavaScript para:

  1. recopile sus datos del formulario a través de DOM
  2. organizarlo en un objeto o array
  3. generar JSON con JSON.stringify
  4. PUBLICAR con XMLHttpRequest

Probablemente sea mejor que te quedes con application/x-www-form-urlencoded datos y procesarlos en el servidor en lugar de JSON. Su formulario no tiene ninguna jerarquía complicada que se beneficiaría de una estructura de datos JSON.


Actualización en respuesta a una importante reescritura de la pregunta…

  • Tu JS no tiene readystatechange controlador, por lo que no hace nada con la respuesta
  • Activa el JS cuando se hace clic en el botón Enviar sin cancelar el comportamiento predeterminado. El navegador enviará el formulario (de la manera habitual) tan pronto como se complete la función JS.

Puedes intentar algo como:



    test



    

Si eres capaz, tienes la habilidad dejar una noticia acerca de qué te ha parecido esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *