如何将PHP脚本添加到.js文件?

时间:2015-05-13 06:11:48

标签: javascript php cakephp

假设我有一个名为 myJavascript.js 的外部JavaScript文件,其中包含3个如下函数:

function myFunc1(){
    //some code
}

function myFunc2(){
    //some code
}

function myFunc3(){
    //some code
}

现在,我想在 myJavascript.js 中添加一些PHP脚本,如下所示,它来自一个名为 myView.ctp 的单独的PHP文件:

<?php
$url = Router::url($this->here, true);
$url = explode('/', $url);
$baseURL = $url[0] . '//' . $url[2] . '/' . $url[3] . '/' . $url[5];
$baseURL2 = $url[0] . '//' . $url[2]. '/' . $url[3];
?>

为什么我需要在 myJavascript.js 中添加这个PHP脚本是这样的 - 我想在我创建的3个函数中使用PHP变量$ baseURL和$ baseURL2。

我怎样才能做到这一点?

修改

对不起,我在问题中犯了一个错误。 php视图文件实际上命名为 myView.ctp ,因为它是CakePHP视图文件。扩展名为 .ctp ,而不是 .php 。我已相应更新了我的问题。

3 个答案:

答案 0 :(得分:1)

如果您使用内部HTML文件并且扩展名为php,则可以。 进入myView.php您可以声明一个全局变量,并将响应服务器值分配到该文件中。 例如:

<强> myView.php

<script>
    var globalVar = <?php echo "your_value" ;?>
</script>
<script src="external_file.js"></script>

<强> external_file.js

console.log(globalVar) // your_value

答案 1 :(得分:0)

您不能在单独的javascript文件中使用php变量。相反,你可以做的是将脚本包含在php模板中,如

<script type="text/javascript">
....
</script>

或要么通过javascript解析网址,如果这适合你。您可以通过以下方式获取当前网址:

window.loacation.href

然后您可以根据需要解析字符串。

答案 2 :(得分:0)

我绝对不会这样做,而是将args传递给方法或属性。

我们通常有一个脚本负责初始化,延迟加载其他东西等等。这是在布局中完成的。

<header>
<script src="/js/app.js">
<script>
    app.init(<?php echo json_encode($this->request); ?>);
<script>
</header>

确保只传递请求所需的内容,它可能包含与安全性相关的数据,因此请小心传递整个内容。

在您的具体观点中:

<script>
    app.nameSpaceForView.someMethod('<?php echo $someStringVar; ?>');
</script>

你甚至可以通过在上面的app.init()函数中实现一些逻辑来避免这种情况,该函数将检查是否根据传递的请求信息设置了app.controllers.ControllerName.ViewName,以及它是否存在执行它。 / p>

在你的观点中,你不需要太多,最好的情况是JS。