Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2011, 17:22
pithon
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
que me faltaria para que funcione de forma asincronica esta funcion js

Hola, no consigo hacer funcionar el codigo javascript de forma asincronica, os comento un poco, trata de un select donde a traves del valor elejido en el select cambio una consulta sql dinamica de forma asincronica hasta aqui todo va bien, pero luego esta consulta la paso a un array php que vuelco a un array javascript donde creo una funcion javascript para mostrar los resultados en un intervalo de tiempo x pero no me funciona, osea que la consulta si me la cambia de forma asincronica pero no se como hacer para que me actualice la funcion javascript de forma asincronica, muestro codigo por si alguien me quiere ayudar.

aqui la funcion para crear un objeto y recuperar datos de forma asincronica
funcion js

Código Javascript:
Ver original
  1. function objetoAjax()   {
  2.     if (window.XMLHttpRequest)
  3.         _ajax = new XMLHttpRequest();
  4.     else
  5.         if (window.ActiveXObject)
  6.             _ajax = new ActiveXObject("Microsoft.XMLHTTP");
  7.         else
  8.             _ajax = false;
  9.     return _ajax;
  10. }
  11.  
  12.  
  13. function pedir(dato) {
  14. Ajax = objetoAjax();
  15. Ajax.open("get","recuperar.php?tienda=" + dato, true);
  16. Ajax.onreadystatechange = function() {
  17.   if (Ajax.readyState == 4 && (Ajax.status == 200 || Ajax.status == 501)){
  18.    document.getElementById('resultado').innerHTML=Ajax.responseText;
  19.    }
  20.  }
  21.  Ajax.send(null);
  22. }

este es el script php donde tengo el select y el div dinamico donde me tiene que mostrar los valores

mostrar.php

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <script type="text/javascript" language="javascript" src="funcion.js"></script>
  4.        
  5.     </head>
  6.     <body>
  7.  
  8. <?php
  9. $con=mysql_connect("localhost","root","");
  10. $consulta="select * from tienda_online";
  11. $reg=mysql_query($consulta);
  12. ?>
  13.  
  14. <select name="tienda" id="tienda" onchange="pedir(document.getElementById('tienda').value)">
  15.     <option value="">seleciona producto</option>
  16. <?php
  17.  while ($row=mysql_fetch_assoc($reg)){
  18. ?>
  19.     <option value="<?php echo $row['id_producto']; ?>"><?php echo $row['producto'];?></option>
  20. <?php  
  21. }
  22. ?>
  23. </select>
  24.  
  25. <div id="consulta"></div>
  26.     </body>
  27. </html>

aqui el codigo donde hago la llamada y tengo la funcion javascript

recuperar.php

Código PHP:
Ver original
  1. <?php
  2. $consulta=mysql_query ("SELECT * FROM tienda_online where id_producto=".$_GET['tienda']."");
  3.  
  4. $producto1 = array();
  5. $producto2 = array();
  6.     while ($row = mysql_fetch_array($consulta)){
  7.        $producto1[]= $row['producto1'];
  8.        $producto2[]= $row['producto2'];
  9.     }
  10. ?>
  11. <script type="text/javascript">
  12.  
  13. var producto1 = new Array();
  14. var producto2 = new Array();
  15.  
  16. <?php
  17. for ($i = 0, $total = count($producto1); $i < $total; $i ++)
  18. echo "\nproducto1[$i] = '$producto1[$i]';";
  19. for ($i = 0, $total = count($producto2); $i < $total; $i ++)
  20. echo "\nproducto2[$i] = '$producto2[$i]';";
  21. ?>
  22.  
  23. var pos = 0;
  24.  function MostrarRegistos(){
  25.    
  26.     for (i=1;i<=2;i++){
  27.        
  28.              prod1 = producto1[pos];
  29.              prod2 = producto2[pos];
  30. document.getElementById("registro"+i).innerHTML ='<table><tr><td>'+prod1+'</td><td>'+prod2+'</td></tr></table>';
  31.  
  32.                      
  33.                      pos++;
  34.                 if(pos>=(producto1.length)){pos = 0}
  35.             }
  36.         }
  37.            
  38.         window.onload = MostrarRegistos;
  39.        
  40.         setInterval(MostrarRegistos,8000)
  41.        
  42. </script>
  43.    
  44.            
  45.             <div class='primero' id="registro1"></div>
  46.             <div class='segundo' id="registro2"></div>

no se como tendria que hacer para que cuando elija una opcion en el select aparte de cambiarme la consulta me actualice los datos de la funcion js de forma asincronica, espero que alguien me pueda ayudar.

Saludos.