我有这种情况,我加载一些也包含一些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);
答案 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