Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/12/2008, 17:27
karl0x
 
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