2013-07-01 65 views
0

我覺得我很接近,但我一直在堅持。這是一個小背景。如何使用從PHP函數返回的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。在gallery.php

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代碼:

<?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

+0

什麼php代碼你想使用JavaScript變量'輸出'? – Pitchinnate

+0

<?php echo do_shortcode('[slideshow gallery_id =「$ ID」]'); ?> – Romes

回答

0

簡短的回答是,你不能。至少不是你提出的方式。生成圖庫的PHP代碼在頁面初始加載之前執行。在頁面加載後,你不能讓jQuery調用腳本並將它傳遞給已經執行的PHP函數。

這就是說,你可能有一些其他的選項來更新頁面加載後的畫廊。不熟悉你正在使用的畫廊,我不能給出具體的建議。但是,我可以談論一般方法。

您可能可以使用javascript/jQuery來更改圖庫的原始HTML輸出(即<img>標記,src鏈接等)。在這種情況下,您可以使用AJAX根據需要下拉畫廊元數據以進行這些更改。

我更簡單的方法可能是簡單地輸出整個新的圖庫HTML塊(可能使用初始函數),並將其替換爲DOM中的當前HTML。在這種情況下,您可以讓AJAX調用一個服務器端腳本,該腳本重新運行gallery函數並返回HTML內容以便通過javascript插入到DOM中。

+0

我試着在PHP端運行'do_shortcode'函數,然後返回HTML輸出,但我得到控制檯錯誤說「調用未定義的函數do_shortcode()」 – Romes

+0

@Romes你需要確保你有函數及其所有依賴項都包含在您調用它的地方。 –

+0

太好了,我認爲這解決了我的問題。我會盡快更新我是如何做到的。我必須再次加載wp才能正常工作。 – Romes