Foros del Web » Programando para Internet » Javascript »

Mostrar resultado en un div con AJAX

Estas en el tema de Mostrar resultado en un div con AJAX en el foro de Javascript en Foros del Web. Buenas a todos, estoy empezando con el tema de AJAX, de apoco, lo que quiero hacer es mandar una variable cualquiera, con un formulario, y ...
  #1 (permalink)  
Antiguo 19/06/2014, 17:21
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Mostrar resultado en un div con AJAX

Buenas a todos, estoy empezando con el tema de AJAX, de apoco,
lo que quiero hacer es mandar una variable cualquiera, con un formulario,
y con si se puede <a href ....>

tengo el siguiente codigo y no me funciona, (es sacado de internet y tocado por mi)

mi codigo


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             function estafuncion(str){
  3.                 var xmlhttp;
  4.                 if (str=="")
  5.                   {
  6.                   document.getElementById("txtHint").innerHTML="";
  7.                   return;
  8.                   }
  9.                 if (window.XMLHttpRequest)
  10.                   {// code for IE7+, Firefox, Chrome, Opera, Safari
  11.                   xmlhttp=new XMLHttpRequest();
  12.                   }
  13.                 else
  14.                   {// code for IE6, IE5
  15.                   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  16.                   }
  17.                 xmlhttp.onreadystatechange=function()
  18.                   {
  19.                   if (xmlhttp.readyState==4 && xmlhttp.status==200)
  20.                      {
  21.                      document.getElementById("cliente").innerHTML=xmlhttp.responseText;
  22.                      }
  23.                   }
  24.                   xmlhttp.open("GET",str,true);
  25.                 xmlhttp.send();
  26.             }
  27.         </script>
  28.     </head>
  29.     <body>
  30.         <form action="02.php"  method="get" onsubmit="estafuncion(this.value)">
  31.             Nombre:<input type="text" name="str" />
  32.             <input type="submit" name="noss" />
  33.             </form>
  34.         <div id="cliente">


y el 02.php
Código PHP:
Ver original
  1. <?
  2.  
  3. $name=$_GET['str'];
  4. echo "esto es lo que mandaste". $name;
  5.  
  6.  
  7. ?>

Creo que para los que saben es sencillo,
todo lo que busco en google esta con jquery, pero primero quiero aprender un poco de ajax..

Bueno se agradece sus tiempo
saludos cordiales
fede

saludos
  #2 (permalink)  
Antiguo 19/06/2014, 18:04
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Mostrar resultado en un div con AJAX

Hola:

Si usas un botón submit para peticiones Ajax, debes también cancelar el envío, y eso no se ve...

Otra cosa... el tag form no lleva el atributo value, así que al menos para tu caso creo que en vez de this.value como parámetro, debería ser: str.value.

Una última cosilla... el segundo parámetro de la petición, debería ser la url donde se procesará la petición...

Revisa esas cosillas, y cuéntanos tus progresos...

Edito: Para el método get creo que deberías paras los parámetros por url...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 19/06/2014 a las 18:06 Razón: pequeño inciso
  #3 (permalink)  
Antiguo 19/06/2014, 18:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 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
  #4 (permalink)  
Antiguo 20/06/2014, 10:56
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Mostrar resultado en un div con AJAX

Hola Gracias a todos por responder, me pondre hacer ejemplos y cualquier duda vuelvo a preguntar se agradece la info...

Y si me gusta mas el codigo nativo de javascript ya que seria el padre del resto.

saludos nuevamente y gracias

fede
  #5 (permalink)  
Antiguo 21/06/2014, 15:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Mostrar resultado en un div con AJAX

Disculpa Alexis88 ...... podras explicarme una partecita de tu codigo ?

Código Javascript:
Ver original
  1. ajax(
  2.         // GET
  3.         this.action + "?str=" + this.str.value,  
  4.         cliente // id del div id='cliente'
  5.     );

He desmenusado esa parte.... y entiendo envias por GET el value del DIV con id='cliente' y tambien el value del form ?

Eso ultimo me tiene confundido porque que yo sepa un <form> no tiene atributo value y por otro lado ...

No podrias concatenar la variable cliente como parametro de esa URL (&cliente=...) ? o sea... por que viajan de forma distinta esos dos datos ?


GRACIAS DESDE YA por ayudarme a entender
__________________
Salu2!
  #6 (permalink)  
Antiguo 21/06/2014, 16:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mostrar resultado en un div con AJAX

Claro, el formulario no posee ese atributo, eso fue lo que le dije, pero si te fijas bien, yo hago esto:

Código Javascript:
Ver original
  1. this.str.value

Y no esto:

Código Javascript:
Ver original
  1. this.value

Hay una gran diferencia entre ambas líneas. La primera, busca en el formulario (representado por la palabra this) al elemento de nombre "str" y toma su valor. La segunda, busca el valor del formulario, algo que no existe.

Por otro lado, con this.action, tomo el nombre del archivo hacia el cual se enviarán los datos a procesar, indicado en el atributo action del formulario. La variable que se le concatena hace referencia al valor de uno de los elementos del formulario, que en este caso es el <input> de nombre "str".

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
  #7 (permalink)  
Antiguo 21/06/2014, 17:09
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Mostrar resultado en un div con AJAX

Alexis88: muchas gracias ....respondiste a mi primera pregunta y estoy satisfecho con esa respuesta pero por que envias cliente fuera de la URL ?

Cita:
form.addEventListener("submit", function(event){
event.preventDefault();
ajax(
this.action + "?str=" + this.str.value,
cliente

);
}, false);
__________________
Salu2!
  #8 (permalink)  
Antiguo 21/06/2014, 17:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mostrar resultado en un div con AJAX

Porque es el segundo argumento que envío a la función Ajax, el cual representa al elemento de salida. No tiene por qué formar parte de la URL.

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
  #9 (permalink)  
Antiguo 21/06/2014, 17:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Mostrar resultado en un div con AJAX

Alexis88 : te das cuenta que


- estas creando el objeto XMLHttpRequest o similar con cada evento (submit)[/B] ?

- Para un caso tan simple no justifica tampoco registrar una y otra vez la funcion para onreadystatechange


EDIT: me explicaste tus razones y tu implementacion esta PERFECTA!
__________________
Salu2!

Última edición por Italico76; 23/06/2014 a las 20:55

Etiquetas: ajax, formulario, funcion, html, input, php, resultado, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:45.