1

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

表单正在通过模型创建框架的方式,并且它的操作和方法都可以。正在发送请求,但作为响应,获取完整的 html 页面源代码而不是 json 格式。

注意:已编辑

4

1 回答 1

0

message没有在您的 jQuery 代码中定义{'message':message}。尝试

$.post('admin/index',{'message':$('#message').val()},function(...

我还在您的 ajax 上下文中看到了一个错误。它应该是

$contentSwitch->addActionContext('index','json')
    ->initContext();

indexAction在json 格式的返回结果中:

echo json_encode($data);

如果您的意图是始终从 index 操作中以 json 响应,我建议您使用 json helper 而不是使用 ajax 上下文:摆脱 $contentSwitch 并使用完成 index 操作

$this->_helper->json->sendJson($data);

当您想从同一操作以不同格式返回时,请使用上下文。

于 2013-09-23T09:53:00.217 回答