加载.js.php文件作为JavaScript无法正常工作

时间:2014-02-13 10:19:10

标签: javascript php wordpress updates

我有这种情况,我加载一些也包含一些PHP代码的JavaScript。该网站不是由我设计的,所以我不知道开发人员为什么选择这种方式。

我必须加载名为 functions.js.php 的文件,加载脚本如下所示:

<script type='text/javascript' src='http://www.somewebsite.com/wp-content/themes/theme/js/functions.js.php?ver=1.0'></script>

脚本 正常运行到WordPress更新 到最后一个版本以及一系列插件。

我发现这是问题,因为控制台日志说:

Uncaught SyntaxError: Unexpected token < functions.js.php:1

显然,该脚本中的第一行是一些php代码。

同样点击脚本网址只会下载文件,而不会将其视为php代码。

感谢您的时间。

更新#1

php不能与js逻辑分开,因为它包含像这样的部分代码

        <?php if ($dynamic_header) { ?>
            $headerIsDynamic = true;
        <?php } else { ?>
            $headerIsDynamic = false;
        <?php } ?>

此链接http://pastebin.com/VkQZwg43

上提供了完整的文档代码

更新#2

脚本通过 functions.php 加载

wp_register_script('functions', get_template_directory_uri() . '/js/functions.js.php', 'jquery', '1.0', TRUE);

3 个答案:

答案 0 :(得分:0)

这个“ functions.js.php ”是一个php文件而不是js文件,这就是错误

你可以在js文件外提取php逻辑吗?

答案 1 :(得分:0)

确保您的网络服务器配置为首先运行php文件;如果是Windows / Apache checkout http://www.php.net/manual/en/install.windows.apache2.php

答案 2 :(得分:0)

所以,一个非常简单的解决方案就是魔术, 然而我不知道为什么

我已将 functions.js.php 重命名为 func.php ,并修改了functions.php脚本加载正确命名的脚本,它可以正常工作。

可能的原因:

WP wp_register_script 会解析最后一个版本中的文件名,并且实际上将加载的文件解析为JS,而不是php例程的结果。

如何复制

将您的php文件从“filename.php”重命名为“filename.js.php”并使用 * wp_register_script * 加载该文件将导致同样的问题。

用于此的Wp版本为 3.8.1