2015-04-25 26 views
0

我能夠檢索通過ajax在functions.php中發送的數據。但我需要template.php中的數據(我的主題)。這是我第一次使用ajax,也許我會以錯誤的方式去做。我能夠echo $ _POST ['myvar'];在functions.php中(我將在發佈代碼後重新開始工作)。假設設置是正確的,我可以訪問functions.php之外的ajax數據嗎?順便說一句,我剛剛在Stack也簽了名,所以如果沒有遵循某個程序,我很抱歉。

編輯

謝謝你們 - 這裏是一個示例代碼。在js文件我有:

$(window).load(function(){ 
     $("#cat").on("click",function() { 


     var selectedCat = $(this).children("option").filter(":selected").text(); 

      $.get('../../../../../../wp-admin/admin-ajax.php', { 

       action: "parent_cat_send", 

       parent_cat: selectedCat 

      }); 

      }); 
    }); 

而在functions.php中我有:

add_action('wp_ajax_parent_cat_send', 'current_par_cat'); 
    add_action('wp_ajax_nopriv_parent_cat_send', 'current_par_cat'); 

    function current_par_cat() { 
     global $parent_cat; 

     $parent_cat = $_GET['parent_cat']; 

     echo $parent_cat; 

      wp_die(); 

    } 

響應有$ parent_cat值。我想在functions.php之外使用$ parent_cat,即在template.php中。到目前爲止,我已經嘗試創建具有全局變量的函數:

function set_global_var($new_value) 
{ 
    global $my_global_var; 
    $my_global_var = $new_value; 
} 

,並調用它的AJAX功能內:

set_global_var($parent_cat); 

爲了進一步說明我的目標,我試圖讓所選擇的來自下拉式的值。該值是由wp_dropdown_categories生成的父類別名稱。得到它後,我想然後獲取該父類別的子類別。我想到了Ajax(我從來沒有用過),因爲我想要有兩個下拉選項 - 一個帶有父類別,另一個帶有由所選父類別生成的子類別(可能不刷新頁面) 。謝謝。

+0

$ _ POST是[超全局變量(http://php.net/manual/en/language.variables.superglobals.php),這意味着你可以從任何地方訪問它。沒有看到您的代碼很難提供幫助,請儘快發佈。有一個閱讀這也是,下次http://stackoverflow.com/help/how-to-ask – rjdown

+0

同意@rjdown這是不可能的,以幫助你這個小信息。但我現在可以說的是,據我所知,你不能在你的主題文件中使用你的ajax代碼,因爲當你的ajax請求被解析時它們沒有被加載。只有'functions.php'文件被加載,你應該只有這個文件中的所有業務邏輯。 – maksbd19

+0

從標題中刪除標記 – Rikesh

回答

0

按照步驟在您的模板文件中重新存放您的數據。有兩種方法可以實現同一時間的數據再現,但是它們對情況的限制。

  1. 您是發送從管理面板Ajax請求,並希望顯示在前端
  2. 您發送Ajax請求,形成前端,並希望如果你是顯示在前端

從管理面板發送一個Ajax請求,並且想要在這種情況下更新模板(前端),首先必須在數據庫中查找您的數據。正如你所說,你通過functions.php文件訪問數據,現在你必須update_option()來添加或更新你的數據到wordpress數據庫。添加必須檢查並獲取您的模板與get_option()但它只會在從前端頁面刷新。

現在情況二,你正在從前端發送數據,並且還想更新它。在這種情況下,請按照update_option()get_option()的第一步進行操作,並且還會發送要在首頁中顯示的functions.php的響應(僅在用於發送請求的同一頁上)並顯示它。因此,如果您刷新頁面,那麼相同的更新數據將在您的模板上進行銷售。

希望你明白我試圖解釋。

+0

謝謝。然而,我試圖訪問和使用template.php中的值而不刷新頁面,並且可能不向數據庫添加新值。我編輯了這個問題來包含我的目標,以防有更好的方法。 –

0

maksbd19給了我,我不能訪問的functions.php以外的變量正確的答案。不知道如何將回答標記爲正確的答案,但這裏是:

「同意@rjdown這是不可能的,以幫助你這個小信息。但我現在可以說,就我所知不能在你的主題文件中使用你的ajax代碼,因爲當你的ajax請求被解析時,它們沒有被加載,只有functions.php文件被加載,你應該只在這個文件中包含所有的業務邏輯 - maksbd19 Apr 26在3:28"