Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/06/2014, 18:15
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Mostrar resultado en un div con AJAX

Hola Federico

El problema está en que no envías un valor a la función, es decir, el formulario no tiene el atributo value como para que intentes enviar su valor, además, el valor de str en la función debe de ser el nombre del archivo hacia el cual enviarás los datos.

Yo te recomiendo hacerlo así:

Código HTML:
Ver original
  1. <form action="02.php">
  2.     Nombre: <input type="text" name="str" />
  3.     <input type="submit" />
  4. </form>
  5. <div id="cliente"></div>

Código Javascript:
Ver original
  1. var form = document.querySelector("form"),
  2.     cliente = document.getElementById("cliente"),
  3.     ajax = function(url, salida){
  4.         var xhr = window.XMLHttpRequest ?
  5.                   new XMLHttpRequest() :
  6.                   new ActiveXObject("Microsoft.XMLHTTP") ||
  7.                   new ActiveXObject("Msxml2.XMLHTTP");
  8.    
  9.         xhr.open("GET", url, true);
  10.         xhr.onreadystatechange = function(){
  11.             if (xhr.readyState == 4){
  12.                 switch (xhr.status){
  13.                     case 200:
  14.                         salida.innerHTML = xhr.responseText;
  15.                         break;
  16.                     case 404:
  17.                         salida.innerHTML= "La dirección brindada no existe";
  18.                         break;
  19.                     default:
  20.                         salida.innerHTML = "Se ha producido un error: " + xhr.status;
  21.                         break;
  22.                 }
  23.             }    
  24.         };
  25.         xhr.send(null);
  26.     };
  27.  
  28. form.addEventListener("submit", function(event){
  29.     event.preventDefault();
  30.     ajax(
  31.         this.action + "?str=" + this.str.value,
  32.         cliente
  33.     );
  34. }, false);

Cuando envías los datos de un formulario a otro archivo para procesarlos, se produce el evento submit, el cual debo de cancelar para evitar que se haga la redirección, utilizando para ello el método preventDefault. Luego, ejecuto a la función ajax, a la cual le paso el nombre del archivo al que enviaré los datos (almacenado en el atributo action del formulario) concatenado con el valor escrito en la caja de nombre "str", además, envío el <div> en el que se mostrará el resultado.

En la función, creo el objeto xhr y procedo a realizar la petición asíncrona, mostrando el resultado en el <div>.

Me alegra ver que quieras aprender a hacer esto con código JS nativo antes que con una librería, créeme que aprenderás más.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand