Foros del Web » Programando para Internet » Jquery »

jQuery Ajax-post con arrays de campos en los formularios

Estas en el tema de jQuery Ajax-post con arrays de campos en los formularios en el foro de Jquery en Foros del Web. Hola, quiero realizar un POST con Ajax de un formulario con un número indeterminado de campos con el mismo nombre, es decir, varios arrays de ...
  #1 (permalink)  
Antiguo 26/11/2008, 06:04
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
jQuery Ajax-post con arrays de campos en los formularios

Hola, quiero realizar un POST con Ajax de un formulario con un número indeterminado de campos con el mismo nombre, es decir, varios arrays de campos.

Intento hacerlo bien con la función $.post o $.ajax de jQuery, pero no logro serializar un array de campos en la llamada.

¿Sabéis la manera de realizar la llamada para meter arrays de campos?

Gracias

(He probado con el Form Plugin, pero con este plugin ni siquiera me hace una llmada Ajax haciendo copypaste del ejemplo que muestra, por otra parte, la documentación de este plugin deja bastante que desear)
  #2 (permalink)  
Antiguo 12/12/2008, 17:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 77
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: jQuery Ajax-post con arrays de campos en los formularios

Kiza sea tarde la respuesta, pero seguramente muchos habran tenido el mismo incoveniente yo lo resolvi de la siguiente manera:

primero le das un id al form, en este caso lo llame <form id="frmListaBienes">
a los campos del formulario que tendran el mismo nombre tendras k colocarlos con [] EJ: <input type='text' name='codi_sede_sed[]' value="">
para serializar todos los elementos del formulario utilizamos el jquery con la funcion serialize(), la cual a todos los elementos del formulario los transforma como si fuera una cadena unica.

como se ve, en data:{} enviamos las variables que deseamos en este caso envio dos una se llama variables_ y la otra opcion.

javascript:

Código php:
Ver original
  1. function pasarListaBienes(){
  2.  var variables =  $("#frmListaBienes").serialize();
  3.  var peticion = $.ajax({
  4.  url:  'ajaxCuadroNecesidades.php?nocache=' +  Math.random(),
  5.  beforeSend: validarLista,
  6.  type: 'POST',
  7.  dataType:  'html',
  8.  data: {variables_ : variables, opcion:"validarLista"},
  9.  success:  function(respuesta) {
  10.   if (respuesta==1){
  11.    alert("La plantilla ya ha  sido ingresada");
  12.    //window.close();
  13.   }
  14.   if  (respuesta==2){
  15.    opener.document.location.reload();
  16.    window.close();
  17.   }
  18.   //$('#detalleListaBienes').html(respuesta);
  19.   //location.reload();  //->para recargar la página
  20.   },
  21.  timeout: 3000,
  22.  error: function()  { alert('Se ha producido un error'); }
  23.  });
  24. }
para recoger las variables enviadas por jquery a traves del .ajax
utilizamos la siguiente funcion de PHP parse_str($var,$arrayLista);
y si desean ver el array simplemente lo puden ver con esto:
echo "<pre>";
print_r ($arrayLista);
echo "</pre>";

php:
Código php:
Ver original
  1. if ((isset($_POST['opcion'])) &&  ($_POST['opcion']=="validarLista")){
  2.  $var =  stripslashes($_POST['variables_']);
  3.  parse_str($var,$arrayLista);
  4. $cont = count($arrayVar['codi_depe_tde']);
  5. for ($i=0; $i<$cont; $i++){
  6.  $codi_sede_sed='\''.$arrayLista['codi_sede_sed'][$i].'\'';
  7.  $codi_depe_tde='\''.$arrayLista['codi_depe_tde'][$i].'\'';
  8.  $ano_cuad_cna='\''.$arrayLista['ano_cuad_cna'][$i].'\'';
  9.  $codi_list_cna='\''.$arrayLista['codi_list_cna'][$i].'\'';
  10.  
  11.  $sqlVerifImportPlant="SP_ABA_WEB  @opcion='verifImportPlant',@codi_sede_sed=$codi_sede_sed,
  12.  @codi_depe_tde=$codi_depe_tde,@ano_cuad_cna=$ano_cuad_cna,@codi_list_cna=$codi_list_cna";
  13.  
  14.  $rsVerifImportPlant  = sybase_query($sqlVerifImportPlant,$connect);
  15.  if  (sybase_num_rows($rsVerifImportPlant)!=0){
  16.   echo '1'; //verifica si tiene la  plantilla ingresada
  17.  } else {
  18.   $sqlImportarPlantilla="SP_ABA_WEB  @opcion='insImportarPlantilla',  @ano_cuad_cna=$ano_cuad_cna,
  19.   @codi_sede_sed=$codi_sede_sed,@codi_depe_tde=$codi_depe_tde,@codi_list_cna=$codi_list_cna";
  20.   //echo  $sqlImportarPlantilla;
  21.   sybase_query($sqlImportarPlantilla,$connect);
  22.   echo  '2'; //se ingresa nueva plantilla
  23.  }
  24. }
  25. }
en este caso vemos que no pintara nada en algun div, solo devolvera como respuenta dos valores que de acuerdo a ello se realizaran dos alert
pero si keremos k pinte algo pondremos algo como esto

$('#detalleListaBienes').html(respuesta);
claro esta k tendra k haber un <div id="detalleListaBienes"></div>

Bueno eso es todo, espero k les sirva.

Última edición por karl0x; 15/12/2008 a las 13:36
  #3 (permalink)  
Antiguo 18/12/2008, 10:55
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 9 meses
Puntos: 1
De acuerdo Respuesta: jQuery Ajax-post con arrays de campos en los formularios

Interesante, yo también necesito hacer algo parecido pero con mootools. Si lo logró lo anexo a este post.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:48.