Tema: Experimento
Ver Mensaje Individual
  #16 (permalink)  
Antiguo 23/06/2014, 17:58
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Experimento

La primera parte (Ajax) seria mas o menos asi:

Código Javascript:
Ver original
  1. <style>
  2.     div.selecciones {display:block;}
  3.     div.containerSel1 {float:left;}
  4.     div.outputAjax {float:left;}
  5.     select {min-width:8em;}
  6. </style>
  7.  
  8. <form action="../pruebas/test_selecciones.php" name="frm" id="frm">
  9.  
  10. <div id="selecciones"> 
  11.     <div id="containerSel1">
  12.         <SELECT name="clientes" id="clientes" size="3">
  13.             <option value="34">Juan Perez</option>
  14.             <option value="12">Maria Juarez</option>
  15.         </SELECT>
  16.     <div>
  17.  
  18.     <div id="outputAjax">
  19.         <SELECT name="ubicaciones" id="ubicaciones" size="3">  
  20.         </SELECT>
  21.     </div>
  22. </div>
  23.  
  24. </form>
  25.  
  26. <script>
  27.  
  28. /*
  29.     Construye query para Ajax
  30.    
  31.     @param objeto literal con las referencias a los elementos del formulario
  32.     @return query de la forma "edad= + edad + &peso= + peso + ..."
  33. */ 
  34. function queryBuilder(o,encode)
  35. {
  36.     encode = encode || false;
  37.    
  38.     var params='',
  39.         c=0,
  40.         val;       
  41.    
  42.     for (prop in o)
  43.     {
  44.         if (prop == '__form__')
  45.             val = o[prop];
  46.         else   
  47.             val = encode ? o[prop].value : encodeURIComponent(o[prop].value);
  48.        
  49.         if (c==0)
  50.             params += prop+'='+val;
  51.         else   
  52.             params += '&'+prop+'='+o[prop].value;
  53.            
  54.         c++;
  55.     }
  56.          
  57.     return params;   
  58. }          
  59.    
  60.    
  61. function ajaxPrepare(){    
  62.     try{
  63.         // Opera 8.0+, Firefox, Safari
  64.         ajaxRequest = new XMLHttpRequest();
  65.     } catch (e){
  66.         // Internet Explorer
  67.         try{
  68.             ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  69.         } catch (e) {
  70.             try{
  71.                 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
  72.             } catch (e){               
  73.                 alert("Error en Ajax");
  74.                 return false;
  75.             }
  76.         }
  77.     }              
  78. }
  79.  
  80.  
  81.  
  82. /*
  83.     @param objeto literal con referencia a los elementos del formulario
  84.     @param action (url to submit)
  85.     @param async
  86. */
  87. function ajaxByPost(object,action,async){
  88.  
  89.     async   = async     || true;
  90.  
  91.     var params = queryBuilder(object,true);
  92.     ajaxRequest.open("POST", action, async);   
  93.    
  94.     ajaxRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  95.     ajaxRequest.send(params);
  96. }
  97.  
  98.  
  99.  
  100. /*
  101.     @param objeto literal con referencia a los elementos del formulario
  102.     @param action (url to submit)
  103.     @param async
  104. */
  105. function ajaxByGet(object,action,async){
  106.  
  107.     async   = async     || true;
  108.  
  109.     var params = queryBuilder(object,false);   
  110.     ajaxRequest.open("GET", action + '?' + params,  async);    
  111.    
  112.     ajaxRequest.send(null);
  113. }
  114.  
  115.  
  116. /*
  117.   Comienzo del programa como tal
  118. */
  119. window.onload = function ()
  120. {
  121.     var ajaxForm    = ajaxForm || {},  
  122.         ubicaciones = document.getElementById('ubicaciones'),
  123.         outputAjax  = document.getElementById('outputAjax');
  124.        
  125.     /* Inicializo ajaxRequest   */
  126.     ajaxPrepare();
  127.  
  128.    
  129.     /* Defino callback de Ajax */
  130.     ajaxRequest.onreadystatechange = function()
  131.     {
  132.             if(ajaxRequest.readyState == 4  && ajaxRequest.status == 200 ){
  133.                 outputAjax.innerHTML = ajaxRequest.responseText;
  134.             }
  135.     };         
  136.    
  137.     /* Registro evento onChange para el Select de clientes */
  138.     document.getElementById('clientes').addEventListener("change", function (event)
  139.     {      
  140.    
  141.         var id      = event.target.id;     
  142.         ajaxForm[id]= event.target;                
  143.        
  144.         ajaxByGet(ajaxForm,frm.action);    
  145.        
  146.     });
  147.    
  148.    
  149. }
  150.  
  151. </script>


Del lado de PHP lo primero es ve que te llega:

Código PHP:
Ver original
  1. <?php
  2.  
  3. var_dump($_REQUEST);


¿ Que debes hacer ahora ?

Enviar en lugar de ese volcado de $_REQUEST lo que necesitas a Javascript para construir el SELECT..OPTIONS de UBICACIONES o bien (no es tan buena la segunda opcion) generar en PHP todo ese HTML e imprimirlo
__________________
Salu2!

Última edición por Italico76; 23/06/2014 a las 18:52