Zend Framework - 在控制器中生成数据并传递给视图以在Javascript中使用。怎么样?

时间:2010-09-15 22:01:13

标签: php javascript zend-framework

我想要使用一些数据来构建表单的选择字段。生成表单的JS(它是jqgrid插件的一部分)在视图中。如何将控制器中的数据导入javascript,以便我可以使用它?

为了让工作变得有效,我尝试了以下内容......

在控制器中,我创建了一个动作来返回一些示例数据:

public function testAction()
    {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        $a = "0:Select";
        return Zend_Json::encode($a);
    }

在视图中,我对该操作进行了ajax调用:

 var testselect = $.ajax({
     url: '/admin/sites/test',
     dataType: "json",
     complete: function(data) {
             console.log(data);
     }
 });  

这将返回一个XMLHTTPRequest对象,该对象部分包含:

responseText:""
status:200
statusText:"OK"

responseText不应该是对/admin/sites/test的调用返回的内容吗?

在我看来,这就是发生的事情:

  1. 视图对管理模块中的站点控制器的测试操作发出ajax请求
  2. 测试操作JSON对$a的内容进行编码并将其返回
  3. complete的{​​{1}}回调函数会将结果记录到控制台,并且testselect中的内容应为$a
  4. 我在哪里误解了这个?有一个更好的方法吗?就像,控制器是否可以将所需的数据传递给视图对象,然后我以某种方式在javascript中访问它(虽然如何,不进行ajax请求或将数据放入某些超级全局,如$ _SESSION我不知道)?

    感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

试试这个:

public function testAction() {
  $data = array('firstname' => 'Benny', 'surname' => 'Hill');
  $this->_helper->json($data);
}

请参阅文档中的section about the json action helper

您还可以阅读有关the action helpers ContextSwitch and AjaxContext

的部分