无法在 Eclipse IDE 中将 php 变量传递给 javascript

Can't pass php variable to javascript in Eclipse IDE

我需要通过将 php 变量传递给 <some javascript>.js 文件来初始化一些 js 变量,在我的 php 项目中 Eclipe Luna IDE (PDT)

当我尝试做的时候:

if (typeof strPreviewImg == 'undefined') {
            strPreviewImg = <?php echo(plugin_dir_url( __FILE__ )."images/vpreview_center.png"); ?>;
}

我在 Eclipse 中遇到以下错误:

Multiple markers at this line - Syntax error, insert ": Expression" to complete Expression - Syntax error on token "<", invalid Expression - Syntax error on tokens, delete these tokens

当我尝试使用引号时:

if (typeof strPreviewImg == 'undefined') {
                strPreviewImg = "<?php echo(plugin_dir_url( __FILE__ ).\"images/vpreview_center.png\"); ?>";
    }

整个 php 表达式作为字符串传递到我的 HTML 代码:

<video poster="<?php echo(plugin_dir_url( __FILE__ ).'images/vpreview_center.png)'; ?>">

所以,是我做错了什么还是 Eclipse PDT 有问题?

谢谢

我已经从您对 plugins_dir_url() 的使用中推断出您正在使用 WordPress。

在 WordPress 中,使用 wp_enqueue_script() 注册脚本句柄后,您可以 "localize" 数据在客户端全局访问。

与 WordPress/PHP:

<?php
$args = array(
    'var1'  =>  'value 1',
    'var2'  =>  'value 2'
);
wp_localize_script( 'your_handle', 'your_cdata', $args );
?>

在您文档的 <head>

中生成 cdata
<head>
<script type='text/javascript'>
/* <;![CDATA[ */
var your_cdata = {"var1":"value 1","var2":"value 2"};
/* ]]> */
</script>
</head>

那么您的 javascript 可以使用:

alert(your_cdata.var1);
alert(your_cdata.var2);

可选 您可以通过将 src URL 设置为 PHP 文件来使用 PHP 来提供 Javascript 文件:

<script type="text/javascript" src="url_to_your_php_file.php" /></script>

或使用 $_GET 变量

<script type="text/javascript" src="url_to_your_php_file.php?var1=value1" /></script>

然后在 "your_php_file.php":

<?php
header( 'content-type: text/javascript' );
// possible database query here using $_GET[$var1]
$value = 'some value';
?>
function name() {
    var example1 = '<?php echo '"' . $value . '"'; ?>';
    var example2 = '<?php echo '"some other data"'; ?>';
    alert( example1 + ' / ' + example2 );
}
<?php
// and even do further includes to additional files (php, js, etc)
@include 'local_path_to_some_other_file.js';
exit;
?>

最后您可以自己复制WordPress示例:

<head>
<script type='text/javascript'>
/* <![CDATA[ */
var your_cdata = {
    "var1":<?php echo '"value 1"'; ?>,
    "var2":<?php echo '"value 2"'; ?>
};
/* ]]> */
</script>

请注意使用单引号括起双引号。这使得双引号成为输出的一部分。