2013-07-01 3 views
0

Я думаю, что я близка, но я застрял в данный момент. Вот немного фона.Как использовать переменную jQuery, возвращаемую функцией PHP

Я использую Wordpress, и у меня есть плагин для галереи. Каждая галерея имеет идентификатор, и я пытаюсь выполнить, когда пользователь нажимает ссылку в галерее, галерея изменится на соответствующую галерею. В галерее отображается следующим образом:

<?php echo do_shortcode('[slideshow gallery_id="1"]'); ?> 

или

<?php if (function_exists('slideshow')) { slideshow(true, "1", false, array()); } ?> 

оба делают то же самое -

где gallery_id определяет правильную галерею. Я использую AJAX для запуска кода, чтобы вернуть правильный идентификатор галереи, когда пользователь нажимает на ссылку.

jQuery('.gallery-btn').click(function() { 
    var galleryId = jQuery(this).data('gallery'); 

    jQuery.ajax({ 
     url: "/wp-content/themes/thetheme/gallery.php", 
     data: {action: galleryId}, 
     type: 'post', 
     success: function(output) { 
      console.log(output); 
     } 
    }) 

}) 

PHP код в gallery.php:

<?php 

if(isset($_POST['action']) && !empty($_POST['action'])) { 
    $galleryId = $_POST['action']; 
    passId($galleryId); 
} 

function passId($id) { 
    echo $id; 
} 

?> 

output возвращает идентификатор, что мне нужно, чтобы затем перейти в код PHP [slideshow gallery_id="$theID"].

Как я могу использовать output из функции успеха в моем PHP-коде?

+0

В каком php-коде вы хотите использовать переменную javascript 'output'? – Pitchinnate

+0

Romes

ответ

0

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

Если у вас есть другие варианты обновления галереи после загрузки страницы. Не знакомы с тем, какую галерею вы используете, я не могу дать конкретные советы. Однако я могу говорить об общем подходе.

Возможно, вы сможете использовать javascript/jQuery для изменения исходного HTML-вывода в галерее (т. Е. <img> тегов, src ссылок и т. Д.). В этом случае вы можете использовать AJAX для выпадания метаданных галереи, если это необходимо для внесения этих изменений.

Простым подходом может быть просто вывод всего нового блока HTML галереи (возможно, с использованием начальной функции) и просто замена этого для текущего HTML в DOM. В этом случае вы можете вызвать вызов AJAX на серверном скрипте, который повторно запускает функцию галереи и возвращает содержимое HTML для вставки в DOM с помощью javascript.

+0

Я попытался запустить функцию «do_shortcode» на стороне PHP, а затем вернуть вывод HTML, но получаю консольные ошибки, говорящие «Call to undefined function do_shortcode()» – Romes

+0

@Romes Вам нужно убедиться, что у вас есть функции и всех ее зависимостей, включенных там, где вы его вызываете. –

+0

Отлично, я думаю, что решил мою проблему. Я обновляю, как я это сделал, когда смогу. Мне пришлось снова загрузить wp, чтобы он работал. – Romes

Смежные вопросы