2012-06-15 2 views
1

Я работаю над плагином Wordpress. Мне нужно передать директории плагинов (которые могут меняться в зависимости от установки человека) с помощью функции jquery.Как передать несколько переменных PHP функции jQuery?

Каков наилучший способ сделать это? Версия плагина, над которым я могу работать, включала весь javascript в PHP-файл, поэтому функции анализировались вместе с остальной частью содержимого, прежде чем отображаться в браузере.

Я смотрю на 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); 

Content 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. По Exemple:

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

Если вам нужна информация из PHP, вы действительно не имеете выбор, чтобы отдать его в плагин где-то. Запросить его с помощью ajax не было бы хорошей идеей.

1

Его довольно трудно, не видя кода, но, вообще говоря, я бы Ouput каталоги где-то с PHP как:

<script type="text/javascript"> 
    var dirs = <?php echo empty($dirs) ? "{}" : json_encode($dirs); ?>; 
</script> 
Смежные вопросы