2013-02-27 133 views
0

我有一个带有2个选择框的ZF表单。两者都应该填写2个数据库表格。第一个选择框将在首先呈现表单时填充。 (所以这样做,工作正常) 然后,我想填充第二个选择框,当用户选择一个值并将它传递给选择SQL以获取第二组数据时,通过获取第一个选择框的值。使用在第一个选择框中选择的值填充第二个选择列表Zend Framework 1

而我不希望页面被刷新。 (所以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'); 
+0

是的,这是'AJAX/JavaScript的/ jquery'。但你到目前为止尝试过什么? – Rikesh 2013-02-27 11:27:03

+0

我编辑我的问题,请看看 – Thanu 2013-02-27 11:33:11

回答

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

});

+0

不幸的是它仍然不工作,它是一样的... – Thanu 2013-02-27 11:47:02

+0

你是否看到'var data'已经改变了?你是否检查'$('#make')。val()'是否获得了真正的值? – MurifoX 2013-02-27 11:50:20

+1

如果正在对服务器进行'ajax'调用,您是否在'firebug/developer tools'中进行了调试?你有没有检查'$ e.preventDefault()'是否不妨碍ajax调用? – MurifoX 2013-02-27 11:51:32

相关问题