2013-02-27 7 views
0

J'ai un formulaire ZF avec 2 boîtes de sélection. Les deux devraient remplir à partir de 2 tables DB. La première case de sélection sera remplie lorsque le formulaire sera rendu au début. (Donc cela est fait et fonctionne bien) Ensuite, je veux remplir la deuxième boîte de sélection en prenant la valeur de la première boîte de sélection quand une valeur est sélectionnée par l'utilisateur et la passer à la sélection SQL pour obtenir le deuxième ensemble de données .Remplir une seconde liste de sélection en utilisant la vaule sélectionnée dans la première boîte de sélection - Zend Framework 1

Et je ne veux pas que la page soit rafraîchie. (So ​​ajax/javascript/jquery)

Je suit à mon avis (.phtml)

<script type="text/javascript"> 

$(document).ready(function(){ 
$('#make').change(function($e){ 
    $e.preventDefault(); 
    var href= "index/load"; 
    var data = 'make_id='+$('#make').val(); 
    $.ajax({ type: "POST", 
      url: href, 
      data: data, 
      success: function(response){ 
      location.href = 'index/load'; 
     } 
    }); 
}); 
}); 

</script> 

mais je ne peux pas accéder à la valeur passée du poste ajax utilisant la suite dans mon action du contrôleur

$this->getRequest()->getParams('make_id'); 
+0

Oui, il est 'ajax/javascript/jquery'. Mais qu'avez-vous essayé jusqu'à présent? – Rikesh

+0

J'ai éditer ma question, s'il vous plaît jeter un oeil – Thanu

Répondre

0

Ok trouvé un moyen simple de le faire, à mon avis phtml je suit,

<body> 
<?php 
    $this->form->setAction($this->url()); 
    echo $this->form; 

    ?> 

    <script type="text/javascript"> 

    $(document).ready(function(){ 
     $('#select1').change(function(){ 
      $('#Myform').submit(); 
      return false; 
     }); 
    }); 

    </script> 
</body> 

Et dans mon action de contrôleur je

public function viewAction() 
{ 

     $form= new Application_Form_Myform(); 
     $selectbox1 = $form->getElement('select1'); 
     $selectbox1->setMultiOptions($this->populateselectbox1()); //This function fetch data from the db and make an array 
     if ($this->getRequest()->getPost('select1')!=""){ 
      $selectbox2 = $form->getElement('select2'); 
      $selected = $this->getRequest()->getPost('select1'); 
      $select->setMultiOptions($this->populatselectbox2($selected)); //This function fetch data from the db and make an array 
      $selectbox1->setValue($selected); 
     } 
     $this->view->form = $form; 
    } 
0

La data partie d'une demande de paiement ajax nécessite un objet comme celui-ci JSON{make_id: something}, donc vous devrez envoyer des paramètres dans ce format:

$(document).ready(function(){ 
    $('#make').change(function($e){ 
    $e.preventDefault(); 
    var href= "index/load"; 
    var data = $('#make').val(); 
    $.ajax({ type: "POST", 
    url: href, 
    data: {make_id: data}, 
    success: function(response){ 
    location.href = 'index/load'; 
    } 
}); 

});

+0

Malheureusement, il ne fonctionne toujours pas, c'est pareil ... – Thanu

+0

Avez-vous vu que 'var data' a changé? Avez-vous vérifié si $ ('# make'). Val() 'obtient une valeur réelle? – MurifoX

+1

Avez-vous débogué dans 'firebug/developer tools' si l'appel' ajax' est en cours sur le serveur? Avez-vous vérifié si le '$ e.preventDefault()' n'empêche pas de faire l'appel ajax? – MurifoX

Questions connexes