Try $js->submit for submitting a form in Ajax, check parameters such
as 'url' and 'update' ..

On Apr 13, 7:27 pm, pedrosas <[email protected]> wrote:
> In a view I have three inmputs add, name, country and Province, the
> Countries Provinces the filter through the method jQuery
> $. getJSON and it works to perfection.
> When I apply the same code to Edit, I have seen through the
> Firebug that it returns no data jonson, I leave below
> the code I use,, if someone could give me some idea.
> I use CakePHP 1.3.8
> Thanks
>
> /views/cities/add.ctp
> <div class="cities form">
>
>     <?php echo $this->Html->script('list_provinces'); ?>
>     <?php echo $this->Form->create('City'); ?>
>     <fieldset>
>         <legend><?php __('Add City'); ?></legend>
>         <?php
>         echo $this->Form->input('nombre');
>         echo $this->Form->input('country_id', array('options' =>
> $countries, 'empty' =>
>             '-- Seleccione Pais --', 'id' => 'country'));
>         ?>
>         <div id="provincias" style="display: none;">
>             <?php
>             echo $this->Form->input('province_id', array('options' =>
> $provinces, 'empty' =>
>                 '-- Seleciones Provincia --', 'id' => 'provincia'));
>             ?>
>         </div>
>
>     </fieldset>
>     <?php echo $this->Form->end(__('Submit', true)); ?>
> </div>
>
> //views/cities/edit.ctp
> <div class="cities form">
>
> <?php echo $this->Html->script('list_provinces'); ?>
> <?php echo $this->Form->create('City');?>
>         <fieldset>
>                 <legend><?php __('Edit City'); ?></legend>
>
>         <?php
>                 echo $this->Form->input('id');
>                 echo $this->Form->input('nombre');
>                  echo $this->Form->input('country_id', array('options'
> =>
> $countries, 'empty' =>
>             '-- Seleccione Pais --', 'id' => 'country'));
>         ?>
>                 <div id="provincias" >
>             <?php
>             echo $this->Form->input('province_id', array('options' =>
> $provinces, 'empty' =>
>                 '-- Seleciones Provincia --', 'id' => 'provincia'));
>             ?>
>         </div>
>         </fieldset>
> <?php echo $this->Form->end(__('Submit', true));?>
> </div>
>
> //controllers/citiescontroller.ctp
> <?php
> class CitiesController extends AppController {
>
>         var $name = 'Cities';
> var $components = array('RequestHandler');
>
>    public function obtener_provincias() {
>
>   if($this->RequestHandler->isAjax()) {
>     $this->set('provinces', $this->City->Province->find('list',
>                            array('conditions' =>
>                                        array('province.country_id' =>
> $this->params['url']['countryId']),
>                                  'recursive' => -1)));
>
>   }
>
> }
>
>         function index() {
>                 $this->City->recursive = 0;
>                 $this->set('cities', $this->paginate());
>         }
>
>         function view($id = null) {
>                 if (!$id) {
>                         $this->Session->setFlash(__('Invalid city',
> true));
>                         $this->redirect(array('action' => 'index'));
>                 }
>                 $this->set('city', $this->City->read(null, $id));
>         }
>
>         function add() {
>                 if (!empty($this->data)) {
>                         $this->City->create();
>                         if ($this->City->save($this->data)) {
>                                 $this->flashSuccess('la ciudad The
> city has been saved','index');
>                                 /*$this->Session->setFlash(__('The
> city has been saved', true));
>                                 $this->redirect(array('action' =>
> 'index'));
>                                 */
>                         } else {
>                                 $this->Session->setFlash(__('The city
> could not be saved. Please,
> try again.', true));
>                         }
>                 }
>                 $countries = $this->City->Country->find('list');
>                 $provinces = $this->City->Province->find('list');
>                 $this->set(compact('countries', 'provinces'));
>
>         }
>
>         function edit($id = null) {
>                 if (!$id && empty($this->data)) {
>                         $this->Session->setFlash(__('Invalid city',
> true));
>                         $this->redirect(array('action' => 'index'));
>                 }
>                 if (!empty($this->data)) {
>                         if ($this->City->save($this->data)) {
>                         //$this->flashSuccess('la ciudad The city has
> been saved','index');
>                            $this->Session->setFlash(__('The city has
> been saved', true));
>                            $this->redirect(array('action' =>
> 'index'));
>                         } else {
>                                 $this->Session->setFlash(__('The city
> could not be saved. Please,
> try again.', true));
>                         }
>                 }
>                 if (empty($this->data)) {
>                         $this->data = $this->City->read(null, $id);
>                 }
>                 $countries = $this->City->Country->find('list');
>                 $provinces = $this->City->Province->find('list');
>                 $this->set(compact('countries', 'provinces'));
>         }
>
>         function delete($id = null) {
>
>                 if (!$id) {
>                         $this->Session->setFlash(__('Invalid id for
> city', true));
>                         $this->redirect(array('action'=>'index'));
>                 }
>                 if ($this->City->delete($id)) {
>                         $this->Session->setFlash(__('City deleted',
> true));
>                         $this->redirect(array('action'=>'index'));
>                 }
>                 $this->Session->setFlash(__('City was not deleted',
> true));
>                 $this->redirect(array('action' => 'index'));
>         }
>
> }
>
> ?>
>
> //views/cities/obtener_provinciast.ctp
> <?php
>   if(isset($provinces)) {
>     echo $this->Js->object($provinces);
>   }
> ?>
>
> //webroot/js/list_provinces.js
> <?php
>   if(isset($provinces)) {
>     echo $this->Js->object($provinces);
>   }
> ?>
>
> //webroot/js/list_provinces.js
> $(document).ready(function(){
>     $('#country').live('change', function() {
>         if($(this).val().length != 0) {
>             $.getJSON('obtener_provincias',
>             {
>                 countryId: $(this).val()
>             },
>             function(provinces) {
>                 if(provinces !== null) {
>                     populateProvinceList(provinces);
>
>                 }
>
>             });
>         }
>     });
>
> });
>
> function populateProvinceList(provinces) {
>     var options = '';
>     $.each(provinces, function(index, province) {
>         options += '<option value="' + index + '">' + province + '</
> option>';
>     });
>     $('#provincia').html(options);
>     $('#provincias').show();

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to