2012-06-15 64 views
1

我正在开发一个Wordpress插件。我需要将插件目录(可以根据个人的安装情况进行更改)传递给jquery函数。如何将多个PHP变量传递给jQuery函数?

这样做的最好方法是什么?我可以使用的插件版本包含了PHP文件中的所有JavaScript,因此在浏览器中呈现之前,函数与其余内容一起被解析。

我在看AJAX,但我认为它可能比我需要更复杂。在这种情况下,我只能使用两个变量(目录,没有用户设置)。

正如我已阅读其良好的做法,我试图保持js和php分开。当插件初始化时,它调用的js文件:

//Wordpress calls the .js when the plugin loads 
    wp_enqueue_script('wp-backitup-funtions', plugin_dir_url(__FILE__) . 'js/wp-backitup.js', array('jquery')); 

然后我在.js文件,并需要弄清楚如何生成以下变量:

dir = '<?php echo content_url() ."/plugins"; ?>'; 
    dir = '<?php echo content_url() ."/themes"; ?>'; 
    dir = '<?php echo content_url() ."/uploads"; ?>'; 

并运行解析以下请求:

xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/includes/wp-backitup-restore.php'); ?>",true); 
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/includes/wp-backitup-start.php'); ?>",true); 
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-directory.php'); ?>",true); 
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-db.php'); ?>",true); 
    window.location = "<?php echo plugins_url() .'/wp-backitup/backitup-project.zip'); ?>"; 
    xmlhttp.open("POST","<?php echo plugins_url() .'/wp-backitup/wp-backitup-delete.php'); ?>",true); 

内容URL和插件URL只/插件不同,/所以,如果我是很难,我只真正需要做一个PHP请求,然后把这个到JS。

+0

您可能会感兴趣的JQuery的' serializeArray()'函数将变量作为单个数组来回传递。 –

回答

1

快速和肮脏的:

<script type="text/javascript"> 
<?php 
    echo 'var myJsObject =' . json_encode(array(
     'dir1' => $directory1, 
     'dir2' => $directory2 
    )); 
?> 
    alert(myJsObject.dir1); 
</script> 
1

您的函数可以加载到.js文件中,但是当您在PHP页面中插入插件时,可能会提供您需要的PHP变量。例如:

$("#myDiv").startPlugin("<?php echo $directory;?>"); 

如果您需要来自php的信息,您实际上没有选择将它提供给插件的地方。用ajax查询它并不是一个好主意。

1

它有点困难没有看到代码,但一般而言,我会从喜欢PHP的地方输出中的目录:

<script type="text/javascript"> 
    var dirs = <?php echo empty($dirs) ? "{}" : json_encode($dirs); ?>; 
</script> 
相关问题