Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/01/2016, 21:54
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Modificar select según valor

Puedes retornar un array de valores desde PHP o bien formar al <select> con las opciones. Por ejemplo, supongamos que el <select> está en un <div>, entonces, lo que tendrías que hacer en ambos casos sería algo similar a lo siguiente:
Código HTML:
Ver original
  1. <div id = "contenedor">
  2.     <select id = "ejemplo"></select>
  3. </div>

Código Javascript:
Ver original
  1. var ajax = new XMLHttpRequest(), respuesta, propiedad, opcion, //Las variables a utilizar
  2.     select = document.querySelector("#ejemplo"); //Para el primer caso
  3.     div = document.querySelector("#contenedor"); //Para el segundo caso
  4. ajax.open("GET", "ejemplo.php", true);
  5. ajax.send();
  6. ajax.addEventListener("load", function(){
  7.     if (this.status == 200){
  8.         //PRIMER CASO: Llenando al <select> con valores llegados en un objeto JSON
  9.         respuesta = JSON.parse(this.responseText);
  10.         select.innerHTML = "";
  11.         for (propiedad in respuesta){
  12.             opcion = document.createElement("option");
  13.             opcion.value = propiedad;
  14.             opcion.text = respuesta[propiedad];
  15.             select.add(opcion);
  16.         }
  17.  
  18.         //SEGUNDO CASO: Reemplazando el <select> actual por uno nuevo llegado como respuesta
  19.         respuesta = this.responseText;
  20.         div.innerHTML = respuesta;
  21.     }
  22. }, false);

Código PHP:
Ver original
  1. <?php
  2. //PRIMER CASO
  3. $array = [
  4.     'valor1' => 'Texto1',
  5.     'valor2' => 'Texto2',
  6.     'valor3' => 'Texto3',
  7.     'valorN' => 'TextoN',
  8. ];
  9. echo json_encode($array);
  10.  
  11. //SEGUNDO CASO
  12. ?>
  13. <select>
  14. <?php
  15. foreach ($array as $valor => $texto){
  16. ?>
  17.     <option value = "<?php echo $valor; ?>"><?php echo $texto; ?></option>
  18. <?php
  19. }
  20. ?>
  21. </select>

En el primer caso, elaboras un array que contendrás índices y valores los cuales corresponderán a cada valor y texto de las opciones del <select>. Como no es posible devolver un array directamente, hay que codificarlo en formato JSON de tal forma que en la llamada asíncrona (AJAX) lo parseas para obtener al objeto y así poder recorrer su lista de atributos y valores. En el segundo caso, solo tienes que formar al <select> en el archivo PHP y en la llamada asíncrona, solo tendrás que insertarla como contenido del contenedor.

NOTA: Los bloques de código en donde señalo que se trata del primer o segundo caso, es para que elijas solo uno de ambos bloques, no los dos a la vez.

Un saludo
__________________
«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

Última edición por Alexis88; 14/01/2016 a las 22:03 Razón: Línea omitida