在我的应用程序在控制器/索引的形式,组成了3个选择框。 当所有三个框有值选择,我需要表现出基于这些选择值相同的观点额外的HTML和额外的表格选项。 显而易见的解决方案似乎使一个AJAX调用来处理数据库的操作,并创建一个视图,并装载该浏览到控制器/ index.phtml另一个动作
我已经能够通过使用加载在index.phtml另一个动作视图:
$('#select').change(function() {
event.preventDefault();
var id = $(this).attr('id');
$('#results').show();
$('#results').load('/controller/index/' + $(this).attr('value'));
return false;
});
不过,我需要通过的所有三个选择框的变量和我交替使用:
$('#select1').change(function() {
var select1 = $('#select1').val();
var select2 = $('#select2').val();
var select3 = $('#select3').val();
$.ajax({
type: 'POST',
dataType: 'json',
url: '/controller/index/',
data: { select1: select1, select2: select2, select3: select3},
success: function(result){
var return1 = result.return1;
var return2 = result.return2;
}
});
});
最后一个方法的工作,据我确实看到在头传递变量和响应包含的观点,但我不能确定它的AJAX观点只是内容放在索引视图中。 (Ofcourse通过不使用AjaxContent切换时,AJAX视图将加载但包括完整的布局为好。)凡是我在AJAX动作或AJAX视图回声不会在索引视图显示。 任何指针会更受欢迎
编辑
阿贾克斯动作现在看起来像
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$select1 = $this->_request->getParam('select1');
$select2 = $this->_request->getParam('select2');
$select3 = $this->_request->getParam('select3');
// DO THE OTHER STUFF AND LOGIC HERE
$results = array(
'return1' => 'value1',
'return2' => 'value2'
);
$this->_response->setBody(json_encode($results));
和控制器初始化
public function init() {
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('ajax', 'json')->initContext();
}
所以,一切正常,我可以在我的浏览器中使用的开发工具(网络)查看响应返回的值,但我只是不知道如何使用它来“更新”的观点