我正在尝试学习如何在zf 1中使用ajax,但我遇到了麻烦。我有一个简单的表单,我将其值发布到控制器索引,然后想要返回我发送的消息并在div中输出class =“show-msg”,但它似乎没有工作。我有一个PHP错误,说明未定义的索引'消息'。有人可以帮助我。 我的jquery函数:
$(document).ready(function(){
$("#form").submit(function() {
var message = $('#login').val();
$.post('/index',{'message':message},function(data){
//console.log(data);
$('.show-msg').html(data)
});
return false;
});
});
然后我的控制器
public function init()
{
$this->_helper->layout()->setLayout('admin');
$contentSwitch = $this->_helper->getHelper('AjaxContext');
$contentSwitch->addActionContext('ajax',array('json'))
->initContext();
}
public function indexAction()
{
$form = new Application_Form_Test();
$this->view->form = $form;
$form->setAction('index')
->setMethod('post');
$myArrayofData = array('a','b','c');
if($this->_request->isXmlHttpRequest()){
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$msg = $this->_request->getPost();
echo $msg['message'];
}
表单是通过模型创建框架的方式,它的动作和方法都是ok.Request正在发送,但作为响应,获取完整的html页面源代码而不是json格式。
注意:EDITED
答案 0 :(得分:0)
message
中未定义 {'message':message}
。尝试
$.post('admin/index',{'message':$('#message').val()},function(...
我也在你的ajax上下文中看到一个错误。它应该是
$contentSwitch->addActionContext('index','json')
->initContext();
indexAction
中的以json格式返回结果:
echo json_encode($data);
如果您的目的是始终在索引操作的json中响应,我建议您使用json帮助程序而不是使用ajax上下文:摆脱$ contentSwitch并使用
完成索引操作$this->_helper->json->sendJson($data);
如果要从同一操作中以不同格式返回,请使用上下文。