我可以用phtml文件管理ajax的结果吗?

时间:2011-04-13 19:54:02

标签: ajax zend-framework view php

我想在phtml文件中管理ajax的结果,这是我的视图代码,ajax链接在那里:

<div id="container"></div><?php echo $this->ajaxLink("Link Name",
                      $this->baseUrl() ."/admin/index/first/format/json",
                      array('update' => '#container',
                            'method' => 'POST')); ?>

这是第一个动作代码:

public function firstAction()
{
    if($this->_request->isPost()) {         
        // pretend this is a sophisticated database query
        $data = array('red','green','blue','yellow');
        $jsonData = Zend_Json::encode($data);
        $this->view->data = $jsonData;
    }
}

这是first.phtml代码:

<ul><?php foreach ($this->data as $color) : ?><li><?= $color ?></li><?php endforeach; ?></ul>

但有一个问题! ajax的结果显示如下:

  

{“data”:“[\”red \“,\”green \“,\”blue \“,\”yellow \“]”}

并且它不使用first.phtml文件!

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

回答:我找到了Marcin帮助的答案;)

public function firstAction()
{
    if($this->_request->isPost()) {         
        // pretend this is a sophisticated database query
        $data = array('red','green','blue','yellow');
        Zend_Layout::getMvcInstance()->disableLayout(); 
        //$jsonData = Zend_Json::encode($data);
        $this->view->data = $data;
    }
}

我从ajaxlink和init方法中删除每个json参数

$ajaxContext = $this->_helper->getHelper('AjaxContext');
    $ajaxContext->addActionContext('first', 'html')
                //->addActionContext('format', 'json')
                ->initContext();

现在每件事情都是正确的:)