试图在Javascript (.js)文件中运行php代码


Trying to run php code within a Javascript (.js) file

首先,我是php的新手,所以请原谅我。我有一个javascript (.js)文件从一个wordpress模板,从var googledockey读取密钥。为了改变它,我必须手动打开.js文件并改变该变量。我想做的是让.js文件从保存在我制作的页面上的地方抓取密钥。下面是管理页面的代码,它有一个文本框供我输入一个键。

<?php   
    if($_POST['gdocs2wp_hidden'] == 'Y') {  
        //Form data sent  
        $gdkey = $_POST['gdocs2wp_gdkey'];  
        update_option('gdocs2wp_gdkey', $gdkey);  

        ?>  
        <div class="updated"><p><strong><?php _e('Options saved.' ); ?></strong></p></div>  
        <?php  
    } else {  
        //Normal page display  
        $gdkey = get_option('gdocs2wp_gdkey');  
    }  
?>  

键保存,每当我打开页面时,键显示,所以我知道这一半是工作的。这就是我被难住的地方。在我的.js文件中,它位于管理页面的子目录中,var googledockey是我必须手动保存每次工作的密钥的地方。我试过<?php echo $gdkey; ?>get_option('gdocs2wp_gdkey');试图得到钥匙,但我没有任何运气。php可以在。js文件中工作吗?有人有什么真知灼见能帮我吗?由于

var jqueryNoConflict = jQuery;
//var googledockey = <?php echo $gdkey; ?>
var googledockey = "INSERTmyKEYhere";
// begin main function
jqueryNoConflict(document).ready(function(){
    initializeTabletopObject(googledockey);
});

您总是可以让JS运行Ajax调用来获取数据。或者,您可以将变量声明移动到包含JS的PHP/HTML文件中,然后添加

<script type='text/javascript'> var googledockey="<?echo $gdkey;?>" </script>

1。注册你的脚本

创建一个JavaScript文件,放在你的主题文件夹中,并注册到WordPress。

wp_register_script(
    'google-docs',
    get_bloginfo('template_directory') . '/scripts/google-docs.js'
);

文档:http://codex.wordpress.org/Function_Reference/wp_register_script

2。

当模板中需要脚本时,您可以将文件加入队列。

wp_enqueue_script(
    'google-docs'
);

文档:http://codex.wordpress.org/Function_Reference/wp_enqueue_script

3。本地化脚本

这允许你在JavaScript中使用PHP变量。

wp_localize_script(
    'google-docs',
    'google_docs_vars',
    array(
        'key' => $google_doc_key
    )
);

文档:http://codex.wordpress.org/Function_Reference/wp_localize_script

4。在脚本中使用变量

现在您可以访问脚本中的变量了。

var google_docs_key = google_docs_vars.key;

就是这样。我认为这将解决你的问题,也是正确的方法。

JS文件一般不会被PHP解析。最简单的(虽然不是最漂亮的)方法可能是:

1)在页面模板中返回隐藏的DOM元素中的值,然后使用JS获取该元素并设置变量(因此,将值放在页面上的隐藏元素中,或者作为属性或其他东西,然后使用JS获取该值并将其分配给变量)。

2)与上面类似,只需将变量声明放在内联脚本(<script>code</script>)中,因为它将被PHP解析-参见Seriyia的答案。

3)使用简单的AJAX调用,这真的很容易与jQuery,让你从JS传递数据到PHP函数在其他地方,如functions.php,然后返回到JS。如果您不熟悉AJAX,那么这可能会带来更多的麻烦。

这很简单您最近使用了此代码片段

var jqueryNoConflict = jQuery;
//var googledockey = <?php echo $gdkey; ?>
var googledockey = "INSERTmyKEYhere";
// begin main function
jqueryNoConflict(document).ready(function(){
initializeTabletopObject(googledockey);
});

您需要将其替换为以下代码

var jqueryNoConflict = jQuery;
 var googledockey = "<?php echo $gdkey; ?>"
 var googledockey = "INSERTmyKEYhere";
   // begin main function
    jqueryNoConflict(document).ready(function(){
initializeTabletopObject(googledockey);
});