如何使用从PHP函数返回的jQuery变量

时间:2013-07-01 18:18:52

标签: php ajax wordpress jquery

我想我很接近,但此刻我陷入困境。这是一个小背景。

我正在使用Wordpress,我有一个插件库。每个图库都有一个ID,我试图在用户点击图库链接时完成,图库将更改为相应的图库。画廊的展示如下:

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

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

都做同样的事情 -

其中gallery_id指定正确的图库。我正在使用AJAX运行一些代码,以便在用户点击链接时获取正确的图库ID。

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

})

gallery.php中的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"]的ID。

如何在PHP代码中使用成功函数中的output

1 个答案:

答案 0 :(得分:0)

简短的回答是,你不能。至少不是以你提议的方式。生成图库的PHP代码在最初加载页面之前执行。在页面加载后,你不能让jQuery调用脚本并将其传递给已经执行的PHP函数。

话虽如此,您可能还有一些其他选项可在页面加载后更新图库。不熟悉你正在使用的画廊,我不能给出具体的建议。但是,我可以谈谈一般方法。

您可以使用javascript / jQuery更改图库的原始HTML输出(即<img>标记,src链接等)。在这种情况下,您可以使用AJAX根据需要下拉图库元数据以进行这些更改。

我更简单的方法可能是简单地输出一个全新的图库HTML块(可能使用初始函数),并将其替换为DOM中的当前HTML。在这种情况下,您可以让AJAX调用一个服务器端脚本,重新运行库函数并返回HTML内容以便通过javascript插入到DOM中。