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

时间:2013-06-13 16:13:34

标签: php javascript wordpress

首先,我对php很新,所以请耐心等待。我有一个来自wordpress模板的javascript(.js)文件,它从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);

});

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

<强> 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;

就是这样。我认为这可以解决您的问题,这也是正确的方法。

答案 2 :(得分:0)

通常不会为PHP解析JS文件。最简单(尽管不是最漂亮)的方法可能是:

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

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

3)使用简单的AJAX调用,这些调用对于jQuery来说非常简单,并且允许您将数据从JS传递到PHP函数(如functions.php之类的其他地方,然后再传递给JS。如果您不熟悉AJAX,这可能比它的价值更麻烦。

答案 3 :(得分:-1)

这很简单 您目前正在使用此代码段

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);

});