我有一个带有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');
答案 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;
}