2012-06-15 90 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> 
相關問題