Foros del Web » Programando para Internet » Jquery »

jquery enviar por $.ajax los valores de un select multiple

Estas en el tema de jquery enviar por $.ajax los valores de un select multiple en el foro de Jquery en Foros del Web. Hola gente: Teniendo un select multiple deseo enviar los valores seleccionados, usando $.ajax pero me entro la duda, ya que siempre el atributo "data" posee ...
  #1 (permalink)  
Antiguo 05/08/2010, 14:43
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 5 meses
Puntos: 35
jquery enviar por $.ajax los valores de un select multiple

Hola gente:
Teniendo un select multiple deseo enviar los valores seleccionados, usando $.ajax
pero me entro la duda, ya que siempre el atributo "data" posee valores key:value separado por comas, pero el selec multiple deberia enviar un array.
PHP puede capturar un array por post/get, pero con jquery/ajax como paso el array??
Gracias!!
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 06/08/2010, 00:50
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 11 meses
Puntos: 14
Respuesta: jquery enviar por $.ajax los valores de un select multiple

yo para olucionar esto lo que hago es, en js hago un each de los elementos seleccionados y creo un string separado por comas, y luego por php hago un explode y genero el array.

Ejemplo:
Código Javascript:
Ver original
  1. var selected = '';
  2. $('select option:checked').each(function(){
  3. selected += $(this).val() + ',';
  4. });
  5. fin = selected.length - 1; // calculo cantidad de caracteres menos 1 para eliminar la coma final
  6. selected = selected.substr( 0, fin ); // elimino la coma final

Ahora en selected tenés los values de los elementos seleccionados, envias ese string al php y luego en el php generas el array, asi:
Código PHP:
Ver original
  1. <?php
  2. $seleccionados = explode(',',$_POST['selected']); // convierto el string a un array.
  3. ?>
  #3 (permalink)  
Antiguo 06/08/2010, 07:49
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 5 meses
Puntos: 35
Respuesta: jquery enviar por $.ajax los valores de un select multiple

Genial solución, Gracias!!
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 06/08/2010, 08:54
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 11 meses
Puntos: 14
Respuesta: jquery enviar por $.ajax los valores de un select multiple

si alguien sabe si es posible enviar un array como parámetro no estaría de más que lo agregue ;)
  #5 (permalink)  
Antiguo 06/08/2010, 09:50
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 19 años, 1 mes
Puntos: 281
Respuesta: jquery enviar por $.ajax los valores de un select multiple

en la documentación de $.post tienes esto:

Cita:
Example: pass arrays of data to the server (while still ignoring the return results).
Código Javascript:
Ver original
  1. $.post("test.php", { 'choices[]': ["Jon", "Susan"] });

Me imagino que lo recibes como un array en PHP igual:

Código PHP:
Ver original
  1. $_POST['choices'][0] // es igual a Jon
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #6 (permalink)  
Antiguo 06/08/2010, 15:53
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: jquery enviar por $.ajax los valores de un select multiple

para mi la más fácil es formar una url de clave/valor de los elementos del form con serialize()

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3.   <script src="http://code.jquery.com/jquery-latest.js"></script>
  4.   <script>
  5. $(function(){
  6.  
  7.     $('input').click( function (){
  8.         queryString =  $('#formulario').serialize();
  9.         alert(queryString);
  10.         $.get('x.php', queryString, function (data){
  11.             alert(data);
  12.         });
  13.         return false;
  14.     });
  15.  
  16. });
  17. </script>
  18. </head>
  19. <body>
  20.  
  21.     <form id="formulario">
  22.         <select multiple name="numeros[]">
  23.             <option>uno
  24.             <option>dos
  25.             <option>tres
  26.             <option>cuatro
  27.             <option>cinco
  28.         </select>
  29.         <input type="submit">
  30.     </form>
  31.  
  32. </body>
  33. </html>

en tu x.php imprimí el array de la variable GET para ver
Código PHP:
Ver original
  1. <?php
  2. print_r($_GET);
  3. ?>

lo mismo para post, con jquery método post y en php recibir con $_POST
  #7 (permalink)  
Antiguo 03/03/2011, 14:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo Respuesta: jquery enviar por $.ajax los valores de un select multiple

Hola, mira lo que yo hice es hacer una funcion que arme un string que sera el parametro
Código:
function valuesSelect(idSelect, paramName){
	var oSelectedOptions = $("#"+idSelect+" option:selected");
	var result = "";
	
	for(var index = 0; index<oSelectedOptions.length;index++){
		result+= paramName + "[]=" + oSelectedOptions[index].value;
		if(index!=oSelectedOptions.length-1)
			result+="&";
	}
	return result;
}
esta funcion devuelve una cadena de este estilo "team[]=1&team[]=2"
siendo "team" el nombre del parametro y los valores son los que estan seleccionados del select que se especifica

en la funcion de ajax, en el parametro data llama a esta funcion y te pegara este string, q es como un array se pasa por url
  #8 (permalink)  
Antiguo 03/03/2011, 15:06
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: jquery enviar por $.ajax los valores de un select multiple

jQuery está echo para ahorrar todos los pasos que habeis puesto. Pon un ID al SELECT, y con $("#id_del_select").val() recuperarás el valor elegido en un SELECT. Si el SELECT es múltiple, entonces te devolverá una cadena con los valores elegidos separados por comas. Luego en el PHP sólo tienes que hacer un explode por la coma, para crear el array de valores escogidos.
Para enviarlo por ajax, pues sólo tendrías que enviar una cadena, es decir, un sólo argumento.

Etiquetas: ajax, enviar, select
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 20:50.