【问题标题】:How to pass variables to javascript in Cakephp 2.3?如何在 Cakephp 2.3 中将变量传递给 javascript?
【发布时间】:2013-11-07 22:11:38
【问题描述】:

我正在尝试在 CakePHP 2.3 中将变量数组传递给 Javascript,但无法使其工作。我希望有人对此有很好的解决方案。

通过在控制器中放置以下内容,我已成功地将数组传递给我的视图:

$this->set(compact('myArray'));

并在我看来尝试将变量传递给 myJs.js。

$this->Js->set('myArray');
$this->Html->script('myJs');

为什么我无法访问 myJs.js 中的 myArray?

【问题讨论】:

    标签: javascript cakephp cakephp-2.0


    【解决方案1】:

    使用 Js helper 的方法将变量传递给 javascript

    只需使用js helperset方法设置你要设置的变量即可。

    $this->Js->set('myArray', $myArray);
    echo $this->Js->writeBuffer(array('onDomReady' => false));
    

    您可以将$myArray 变量作为window.app.myArray 访问您的javascript。

    【讨论】:

    • 如果您有任何疑问或疑虑,请告诉我@Hans。
    • 这样我得到一个错误“window.app 未定义”。有什么想法吗?
    • 检查你的视图源是否设置了这个变量
    • 最好将onDomReady指定为false以防止错误“window.app”未定义。此外,看起来inline 也不是必需的。所以我的版本是:echo $this->Js->writeBuffer(array('onDomReady' => false));
    • 我只是将 inline 设置为 false 以在页面顶部显示脚本。我已经编辑了将onDomReady 设置为false 的答案,谢谢您的信息。 @VCD
    【解决方案2】:
    echo $this->Html->scriptBlock(
        "var myArray = '" . json_encode($myArray) . "'",
        array('inline' => true)
        );
    echo $this->Html->script('myJs');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2019-07-07
      • 2020-01-11
      • 2017-04-29
      • 2011-04-09
      • 2011-09-27
      相关资源
      最近更新 更多