表单提交ajax zend框架

时间:2013-09-23 09:40:15

标签: jquery ajax zend-framework output

我正在尝试学习如何在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

1 个答案:

答案 0 :(得分:0)

您的jQuery代码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);

如果要从同一操作中以不同格式返回,请使用上下文。