Problema con combo recargado con AJAX

Listeros,
Tengo un problema con un combo el cual es recargado por medio de Ajax. El mismo se recarga sin problemas y se puede seleccionar una opcion, pero luego de enviar los datos mediante post obtengo todos los valores excepto el de este combo. Estoy usando el metodo indicado en el libro; Aqui algo del codigo para ilustrar mejor:

Primera Parte:

<?= form_tag ("anticipo/guardar", "method: POST", "class: form","name: frm","id: frm") ?>
<table summary="Estados encontrados" class="" border="0" cellspacing="0">
<tbody>
<tr>
<td valign="middle" align="right"><label for="nombre">Personal:</label> </td>
<td valign="middle">
<?= select_tag("personal", "class: textbox", "id: personal") ?>
<?= option_tag("0", "Seleccione ...", "selected: true") ?>
<? foreach($Personal->find() as $persona) { ?>
<?= option_tag($persona->cedula,$persona->cedula.'->'.$persona->nombre.' '.$persona->apellido) ?>
<? } ?>
</select>
</td>
</tr>
<tr>
<td valign="middle" align="right"><label for="nombre">Relacion Previa:</label> </td>
<td valign="middle">
<div id='relacion'>
<?= select_tag("relacionprevia", "class: textbox", "id: relacionprevia") ?>
<?= option_tag("0", "Seleccione ...", "selected: true") ?>
</div>
</td>
</tr>
</tbody>
</table>
<input name="guardar" type="submit" value=" " class="buttons" />
<?= end_form_tag() ?>

<script type="text/javascript">
new Event.observe("personal", "change", function(){
new AJAX.viewRequest({
action: "anticipo/filtrarprevia/"+$F("personal"),
container: "relacion"
})
})
</script>

Sitio donde recarga:
<?= select_tag("relacionprevia", "class: textbox", "id: relacionprevia") ?>
<?= option_tag("0", "Seleccione ...", "selected: true") ?>
<? foreach($relaciones as $relacionp) { ?>
<?= option_tag("$relacionp->id",$relacionp->cedula.'->'.$relacionp->desde.'->'.$relacionp->hasta) ?>
<? } ?>

Controlador donde deben llegar los valores para actualizar:
function guardar($id = null) {
$this->sessionRedirect();
$this->before_filter('anticipo', 'guardar','');
//
Verifica si el modulo esta activo
$this->filter=$this->comprobar('anticipo', 'guardar','');
//
print("Personal:".$this->request('personal')." Relacion Previa: ".$this->request('relacionprevia')
}

Muchas gracias de antemano..

Saludos

Comentarios

  • edited 12:06
    Buenos dias,

    Recientemente tube algunas batallitas con combos y ajax de la cual sali victorioso, por lo que creo poder ayudarte, pero necesito saber que version de kumbia estas usando, que te hace cuando actualizas el select personal? te lanza algun error? tienes el metodo filtrarprevia en anticipo? que codigo tienes en ese metodo? si tienes firebug instalado puedes ver que url te solicita al servidor cuando actualizas el select personal.

    saludos
  • edited 12:06
    Buenos dias compañeros...

    Buenos dias,
    Recientemente tube algunas batallitas con combos y ajax de la cual sali victorioso, por lo que creo poder ayudarte,

    ok, muchas gracias por responder...

    pero necesito saber que version de kumbia estas usando,
    La version es 0.4.7 si no me equivoco (no veo ningún archivo que me indique la version y el nombre de la carpeta ya estaba modificada cuando tome el proyecto);

    que te hace cuando actualizas el select personal? te lanza algun error? tienes el metodo filtrarprevia en anticipo? que codigo tienes en ese metodo?
    No me lanza ningún error... El select personal se carga con datos provenientes de una base de datos, el mismo se carga sin problema y me muestra la lista de los registros, al escoger un registro el siguiente script toma el control:

    <script type="text/javascript">
    new Event.observe("personal", "change", function(){
    new AJAX.viewRequest({
    action: "anticipo/filtrarprevia/"+$F("personal"),
    container: "relacion"
    })
    })
    </script>


    Este script me manda a la funcion filtrarprevia del controlador anticipo. En el controlador la funcion es la siguiente:
    function filtrarprevia($id) {
    $this->set_response("view");
    $this->relaciones = $this->Relacionprevia->find("cedula = '$id'");
    }

    Al ejecutarse esta funcion el controlador manda ejecutar una parte de la vista que recargara el combo, el codigo esta en /views/anticipo/filtrarprevia.phtml y contiene lo siguiente:
    <?= select_tag("relacionprevia", "class: textbox", "id: relacionprevia") ?>
    <?= option_tag("0", "Seleccione ...", "selected: true") ?>
    <? foreach($relaciones as $relacionp) { ?>
    <?= option_tag("$relacionp->id",$relacionp->cedula.'->'.$relacionp->desde.'->'.$relacionp->hasta) ?>
    <? } ?>


    Al ejecutarse este código todo funciona de maravilla y el combo se recarga tal como lo espero, pero ahora es cuando viene el problema y luego de escoger un registro de este segundo combo y presiono enviar se ejecuta la funcion anticipo/guardar que esta en el controlador y puedo observar el valor de todos los campos del formulario excepto el de este combo. Me da la impresion de que como este combo se recarga fuera del formulario entonces no toma sus valores, lo extraño es que este procedimiento que uso lo tome del libro de kumbia 0.4.7 (paginas 226,227) por lo que pienso que deberia funcionar. Este procedimiento funciona bien cuando se trata de campos de texto pero no con el combo.

    si tienes firebug instalado puedes ver que url te solicita al servidor cuando actualizas el select personal.

    el firebug me envia esto:
    http://localhost/iprestobf/anticipo/filtrarprevia/2618106

    saludos

    He dado muchas vueltas tratando de encontrar el error pero nada, por ahora lo que me resta es contar con la colaboración ustedes. No se si todavia no soy muy claro en mi planteamiento por lo que espero que me consulten cualquier otra duda al respecto...

    saludos
  • edited 12:06
    Buenas Tardes;

    Bueno a simple vista lo unico que encuentro objeto de cambio es lo siguiente:

    <?= option_tag($relacionp->id,$relacionp->cedula.'->'.$relacionp->desde.'->'.$relacionp->hasta) ?>

    sin comillas dobles.

    prueba con eso.
  • edited 12:06
    Gracias maoc84.. pero probe lo que indicas y nada... Ahora, una pregunta ¿este procedimiento es correcto? ¿recargar un combo de esta manera y que por medio del metodo POST se captura el valor? ¿tu has hecho esto antes y te funciona? Pregunto porque como podras notar soy novato en el mundo web y todavia tengo mucho que aprender...

    Saludos
  • edited 12:06
    Si, como dices, el cambio que te dije no tiene mayor relevancia, en verdad que no veo donde esta el error. con respecto al procedimiento te puedo decir que aunque no soy un experto en el desarrollo web creo que es un procedimiento totalmente correcto y mas aun usando ajax ya que no vuelves a cargar toda la pagina sino la seccion que necesitas y te puedo decir que lo estoy utilizando actualmente y me funciona de maravilla.

    Yo estoy trabajando con la version 1.0.

    Dejame terminar de probar un codigo y en caso de exito te lo envio a ver si te sirve de guia.

    Saludos.
Sign In or Register to comment.