Cakephp:如何将值传递到javascript文件中?

时间:2011-02-21 00:50:45

标签: php javascript cakephp

我有一些javascript被包含在视图中,我在这个帖子中使用了inkedmn的方法: adding-page-specific-javascript-to-each-view-in-cakephp

所以我现在在我看来有以下代码:

$this->set('jsIncludes',array('google'));   // this will link to /js/google.js

但是我需要将一些值从视图传递到javascript文件中,我不确定如何实现这一点。

更新:我想一个选项是回显php文件中的值,用div标签括起来,然后在javascript代码中使用getElementById()。

4 个答案:

答案 0 :(得分:9)

你应该能够注入一个< script>使用您想要的数据直接标记到HTML中:

<script type="text/javascript">
var mynum = <?php echo intval($num); ?>;
var mystring = "<?php echo addslashes($string); ?>";
var myarray = <?php echo json_encode(array("one" => 1, "two" => 2)); ?>;
</script>

其他地方的任何javascript都应该能够使用这些变量。

注意:如果使用此数据的代码在页面中较早运行,他们显然不会看到这些变量。如果是这种情况,要么确保首先加载数据,要么可以使用setTimeout()或document.onready事件延迟代码运行直到页面完全加载。

答案 1 :(得分:1)

你有一些自动运行的代码吗?您可以将其包装在函数中,并将函数传递给必要的参数。

例如,我们现在在my-script.js中有以下代码:

window.onload = function() {
  alert('My favorite fruits are apples, and my favorite color is red.');
}

将其包裹在这样的函数中:

function initialize(args) {
  window.onload = function() {
    alert('My favorite fruits are ' + args.fruit +
     ', and my favorite color is ' + args.color + '.');
    }
  }

然后,在加载<script>后使用PHP输出my-script.js元素,并调用该函数。这是一个示例输出:

<script>
  initialize({fruit: 'apples', color: 'red'});
</script>

答案 2 :(得分:0)

$this->Js->set('varname',$value);

来自js文件

var myvar = window.app.varname;

答案 3 :(得分:0)

这些是以下步骤:

1)在AppController.php

中包含js助手
public $helpers = array('Js');

2)现在在ctp文件中声明js变量 就像那样:

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

3)现在在js文件中使用这个js vairable“state_name” 就像那样:

console.log(window.app.state_name);
var state = window.app.state_name;