使用在第一个选择框Zend Framework 1中选择的值填充第二个选择列表

时间:2013-02-27 11:20:20

标签: php zend-framework select

我有一个带有2个选择框的ZF表格。两者都应该从2个DB表填充。首先在表单渲染时填充第一个选择框。 (所以这样做并且工作正常) 然后我想通过在用户选择值时获取第一个选择框的值来填充第二个选择框,并将其传递给选择SQL以获取第二组数据。

我不希望页面刷新。 (所以ajax / javascript / jquery)

我在视图(.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>

但我无法使用控制器操作中的以下内容访问从ajax帖子传递的值

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

2 个答案:

答案 0 :(得分:0)

ajax请求的data部分需要JSON这样的{make_id: something}对象,因此您必须以这种格式发送参数:

$(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';
   }
 });

});

答案 1 :(得分:0)

好的找到了一种简单的方法,在我的视图中,phtml我有以下内容,

 <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>

在我的控制器动作中我有

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;
    }