Stack Overflow en español Asked on January 6, 2022
he intentado de todo para poder mostrar un POST en HTML con un APIrest de reqres.in intentando poner los datos que introduzca el usuario en los inputs en un cuadro pero me ha parecido particularmente dificil.
Me gustaria que los datos que introduzca el usuario aparecieran dentro del cuadro de #caja, pero a pesar de todo me sigue apareciendo el siguiente mensaje de error en la consola:
Uncaught TypeError: Cannot read property ‘forEach’ of undefined
at Object.success (ajax.js:35)
HTML:
<form action="https://reqres.in/api/users" method="POST" id="formulario">
<p>
Nombre: <input type="text" name="name">
</p>
<p>
Web: <input type="text" name="web">
</p>
<p>
<input type="submit" value="Registrar" id="submit">
</p>
</form>
<span id="aviso">Usuario Registrado con Exito</span>
<div id="datos">
</div>
JS:
$("#formulario").click(function(response){
response.preventDefault();
var usuario = {
"nombre": $('input[name="name"]').val(),
"web": $('input[name="web"]').val()
}
$.post($(this).attr("action"), usuario, function(response){
console.log(response);
usuario.response.forEach(function(element){
$("#datos").append("<ul><li><p>"+element+"</p></li></ul>");
});
return false;
});
});
primero que nada debemos conocer que respuesta te devuelve el servicio https://reqres.in/api/users y haciendo un par de pruebas la respuesta es la siguiente:
{
"nombre": "Juan",
"web": "www.google.com",
"id": "578",
"createdAt": "2020-07-24T23:24:47.951Z"
}
Ahora, por cómo lo veo, deberías trabajar con el objeto de respuesta que obtienes como resultado (el que vemos arriba que tiene 4 propiedades).
Por otro lado, el error del forEach es por que en primer lugar la propiedad usuario.response es undefined ya que el objeto usuario no tiene dicha propiedad y la sentencia forEach no puede iterar sobre una propiedad no definida.
Por último, la información que deberias mostrar dentro del div podría ser algo como:
var datos = $('<ul></ul>');
var name = $('<li></li>').text(response.nombre).appendTo(datos);
var name = $('<li></li>').text(response.web).appendTo(datos);
var name = $('<li></li>').text(response.id).appendTo(datos);
$("#datos").append(datos);
Saludos.
Answered by Fernando Jiménez on January 6, 2022
1 Asked on November 17, 2021 by connie-r-m
1 Asked on November 17, 2021 by idunno
1 Asked on November 17, 2021 by jose-luis-sanchez-garcia
1 Asked on November 17, 2021 by marcelo-avendao
1 Asked on November 17, 2021 by daniel-medina
1 Asked on November 17, 2021 by harold-rueda-antolinez
2 Asked on November 17, 2021 by fabian-feriks
1 Asked on November 17, 2021 by gabriel-fuentesv
0 Asked on November 15, 2021
0 Asked on November 15, 2021 by riicky
1 Asked on November 15, 2021 by orlando-sandoval-m
Get help from others!
Recent Questions
Recent Answers
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP