Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp:如何将值传递到javascript文件?_Php_Javascript_Cakephp - Fatal编程技术网

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

Cakephp:如何将值传递到javascript文件?,php,javascript,cakephp,Php,Javascript,Cakephp,我有一些javascript包含在一个视图中,我在这个线程中使用了Inkedn的方法: 因此,我现在看到以下代码: $this->set('jsIncludes',array('google')); // this will link to /js/google.js 但是我需要将一些值从视图传递到javascript文件中,我不确定如何实现这一点 更新:我想一个选项是回显php文件中的值,用div标记括起来,然后在javascript代码中使用getElementById()。您

我有一些javascript包含在一个视图中,我在这个线程中使用了Inkedn的方法:

因此,我现在看到以下代码:

$this->set('jsIncludes',array('google'));   // this will link to /js/google.js
但是我需要将一些值从视图传递到javascript文件中,我不确定如何实现这一点


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

您应该能够使用所需的数据将标记直接插入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>

var mynum=;
var mystring=“”;
var myarray=;
其他地方的任何javascript都应该能够使用这些变量


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

是否有自动运行的代码?您可以将其包装在函数中,并向函数传递必要的参数

例如,假设您当前在
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 + '.');
    }
  }
然后,在加载
myscript.js
后的某处使用PHP输出
元素,并调用该函数。以下是一个示例输出:

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

初始化({水果:'苹果',颜色:'红色'});
从js文件

var myvar = window.app.varname;

这些步骤如下:

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));
console.log(window.app.state_name);
var state = window.app.state_name;
3) 现在在js文件中使用这个js变量“state_name” 就像这样:

$state = 'rajasthan';
$this->Js->set('state_name',$state);
echo $this->Js->writeBuffer(array('onDomReady' => false));
console.log(window.app.state_name);
var state = window.app.state_name;

谢谢你的投入。我还有一个额外的要求,就是用户不能在呈现的html页面源代码中看到这些变量的值。这些值有点安全。你知道怎么才能做到吗?@akskap我认为这是不可能的;充其量,您可以混淆数据,使其更难读取。没有一种向浏览器提供数据的方法,用户无法看到这些数据是否已充分确定。任何需要100%保密的东西都必须完全在服务器端生存。