php - Zend Framework - 在 Controller 中生成数据并传递给 View 以在 Javascript 中使用。如何?

标签 php javascript zend-framework

我有一些数据想要用来构建表单的选择字段。生成表单的 JS(它是 jqgrid 插件的一部分)位于 View 中。如何将数据从 Controller 获取到 JavaScript 中以便我可以使用它?

为了让某些东西正常工作,我尝试了以下操作...

在 Controller 中,我创建了一个操作来返回一些示例数据:

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

在 View 中,我对该操作进行 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. View 向管理模块中站点 Controller 的测试操作发出 ajax 请求
  2. 测试操作 JSON 对 $a 的内容进行编码并返回
  3. testselectcomplete 回调函数将结果记录到控制台,并且应在 responseText 中包含 $a 的内容

我哪里理解错了?有一个更好的方法吗?就像, Controller 可以将所需的数据传递给 View 对象,然后我以某种方式在 javascript 中访问它(尽管如何,而不发出 ajax 请求或将数据放入像 $_SESSION 这样的超全局中,我不知道)? p>

感谢任何帮助。

最佳答案

试试这个:

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 的部分

关于php - Zend Framework - 在 Controller 中生成数据并传递给 View 以在 Javascript 中使用。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722194/

相关文章:

mysql - 为什么我的带有内连接的 Doctrine 查询返回多维数组?

javascript - "Manifest: Line: 1, column: 1, Syntax error"

php - Symfony 2 中 Zend\Validate\Db\NoRecordExists 的模拟

php - zf2 为什么要在模块配置中的可调用数组中添加 Controller

php - wordpress中的路由问题

javascript - 如何在 Bootstrap 中制作加载进度条?

javascript - Highcharts w/React - 在 JSX 中找不到渲染 div

php - while 或 foreach 与 if 循环

php - 使用 PHP 时未从 firebird 数据库接收到正确的数据

php - javascript 相互减去日期数字