Entonces tengo este formulario HTML:
<html>
<head><title>test</title></head>
<body>
<form action="myurl" method="POST" name="myForm">
<p><label for="first_name">First Name:</label>
<input type="text" name="first_name" id="fname"></p>
<p><label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="lname"></p>
<input value="Submit" type="submit" onclick="submitform()">
</form>
</body>
</html>
¿Cuál sería la forma más fácil de enviar los datos de este formulario como un objeto JSON a mi servidor cuando un usuario hace clic en enviar?
ACTUALIZACIÓN: He ido tan lejos como esto, pero no parece funcionar:
<script type="text/javascript">
function submitform(){
alert("Sending Json");
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
var j = {
"first_name":"binchen",
"last_name":"heris",
};
xhr.send(JSON.stringify(j));
¿Qué estoy haciendo mal?
$.ajax
yserialize
en la API jQuery.Respuestas:
Obtenga datos de formulario completos como matriz y json lo codifique.
Puedes usarlo más tarde en ajax. O si no estás usando ajax; póngalo en un área de texto oculta y pase al servidor. Si estos datos se pasan como una cadena json a través de datos de forma normal, entonces debe decodificarlos usando json_decode . Luego obtendrá todos los datos en una matriz.
fuente
$.ajax
que es muy fácil pasar estos datos.HTML no proporciona forma de generar JSON a partir de datos de formulario.
Si realmente quiere manejarlo desde el cliente, entonces debería recurrir al uso de JavaScript para:
Probablemente sea mejor atenerse a los
application/x-www-form-urlencoded
datos y procesarlos en el servidor en lugar de JSON. Su formulario no tiene una jerarquía complicada que se beneficiaría de una estructura de datos JSON.Actualización en respuesta a una gran reescritura de la pregunta ...
readystatechange
controlador, por lo que no hace nada con la respuestafuente
enctype='application/json'
a la definición del formulario para crear datos JSON w3.org/TR/html-json-formssu código está bien pero nunca se ejecutó, debido al botón de enviar [type = "submit"] simplemente reemplácelo por type = button
dentro de tu guión; forma no se declara.
fuente
Llego tarde, pero debo decir que para aquellos que necesitan un objeto, usando solo html, hay una manera. En algunos marcos del lado del servidor como PHP, puede escribir el siguiente código:
Entonces, necesitamos configurar el nombre de la entrada como
object[property]
para obtener un objeto. En el ejemplo anterior, obtuvimos datos con el siguiente JSON:fuente