Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/07/2012, 21:32
link01
 
Fecha de Ingreso: octubre-2011
Mensajes: 58
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Responder petición al objeto XMLHttpRequest con AJAX

Gracias.
Vi un tutorial de los de la pagina thenewboston, ellos lo hacen con jquery, pero con ese vídeo entendí mejor.

Lo que pasa es que el responseText siempre trae todo el codigo html. Así que creo que es mejor enviar a otra pagina la petición, procesar en esa página y solo mandar devuelta la respuesta. Así es más sencillo aunque se crearían más páginas.

Otra cosa que estaba haciendo mal es que pensaba que tenía que utilizar los name que le había puesto en el html, pero son los name que mando en el query_string.

Dejo el codigo:

formulario.php

Código Javascript:
Ver original
  1. <?php
  2.     echo "<pre>";
  3.         print_r($_POST);
  4.     echo "</pre>";
  5.  
  6. ?>
  7.  
  8. <html>
  9. <head>
  10.     <title>Formulario</title>
  11.  
  12.     <script type="text/javascript">
  13.         var peticion_http = null;
  14.         var READY_STATE_COMPLETE = 4;
  15.  
  16.         function iniciar_xhr(){
  17.             if(window.XMLHttpRequest){
  18.                 return new XMLHttpRequest();
  19.             }
  20.         }
  21.  
  22.         window.onload = function(){
  23.             peticion_http = iniciar_xhr();
  24.             btnEnviar = document.getElementsByTagName("button")[0];
  25.             btnEnviar.onclick = enviarPeticion;
  26.         }
  27.  
  28.         function enviarPeticion(){
  29.             nombre = document.getElementsByName("txtNombre")[0].value;
  30.             apellido = document.getElementsByName("txtApellido")[0].value;
  31.  
  32.             query_string = "nombre=" + encodeURIComponent(nombre) +
  33.                            "&apellido=" + encodeURIComponent(apellido) +
  34.                            "&nocache=" +Math.random();
  35.  
  36.  
  37.             peticion_http.onreadystatechange = verDatosRecibidos;
  38.             peticion_http.open("POST","http://localhost/AJAX/servidor.php", true);
  39.             peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  40.             peticion_http.send(query_string);
  41.  
  42.         }
  43.  
  44.         function verDatosRecibidos(){
  45.             if(peticion_http.readyState == READY_STATE_COMPLETE){
  46.                 if(peticion_http.status == 200) {
  47.                     div = document.getElementById("datosEnviados");
  48.                     respuesta = peticion_http.responseText.split(",");
  49.  
  50.                     div.innerHTML = "Nombre: " +respuesta[0] +
  51.                                     "<br/>Apellido: " +respuesta[1];
  52.  
  53.                     alert(peticion_http.responseText);
  54.                 }
  55.             }
  56.            
  57.         }
  58.     </script>
  59.  
  60. </head>
  61. <body>
  62.     <h1> Formulario de prueba </h1>
  63.  
  64.  
  65.         <table>
  66.             <tr>
  67.                 <td> Nombre </td>
  68.                 <td> <input type="text" name="txtNombre" />
  69.             </tr>
  70.             <tr>
  71.                 <td> Apellido </td>
  72.                 <td> <input type="text" name="txtApellido" />
  73.             </tr>
  74.             <tr>
  75.                 <td colspan="2">
  76.                     <button type="button"> Enviar </button>
  77.                 </td>
  78.             </tr>
  79.         </table>
  80.  
  81.     <div id="datosEnviados"></div>
  82. </body>
  83. </html>

servidor.php
Código PHP:
Ver original
  1. <?php
  2.     echo $_POST['nombre'];
  3.     echo ",";
  4.     echo $_POST['apellido'];
  5.  
  6. ?>
__________________
La libertad más difícil de conservar es la de equivocarse. - Morris Wes

Lo que faltaba en internet: http://binar10s.blogspot.com/

Última edición por link01; 14/07/2012 a las 21:42