2016-03-02 51 views
0

我有一個jQuery的.load()在腳本:錯誤()調用

$('#category2').load("/wp-content/themes/mydomain/categories.php", 
          { category_number : 2, // category to get 
           category_1 : category_1, 
           category_2 : category_2, 
           category_3 : category_3, 
           category_4 : category_4, 
           category_5 : category_5, 
           category_6 : category_6, 
           category_7 : category_7 
          }, 
          function(responseTxt, textStatus, xhr) { 
           console.log("responseTxt=" + responseTxt + ", textStatus=" + textStatus + ", xhr->status=" + xhr.statusText); 
          }) 

而且在爲.load(在categories.php處理)我目前有:

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL & ~E_NOTICE); 


global $wpdb; 
$query=("SELECT Cat2 
     FROM wp_categories 
     WHERE Cat3 IS NULL AND Cat4 IS NULL AND Cat5 IS NULL AND Cat6 IS NULL"); 
$dropdown = $wpdb->get_results($query, OBJECT); 
print_r ($dropdown); 
?> 

但是我從上面的$ dropdown =行中得到一個錯誤:「調用一個非對象的成員函數get_results()。」

有沒有人看到我在做什麼錯了?

+0

你的PHP文件是不是在 「WordPress的環境」,即WP代碼不包含在裏面。您應該在文件的開頭手動包含'wp-load.php'或者使用wp ajax api(最佳選擇,btw)。看看[這個問題](http://stackoverflow.com/questions/35748211/update-option-doesnt-work-in-single-php-file/35749658#35749658),它會讓事情更清楚。 –

回答

1

您直接調用/wp-content/themes/mydomain/categories.php文件,而不是通過WordPress傳遞它。這意味着$wpdb對象不可用。

您可以通過直接加載categories.php文件,並把確認這一點:

global $wpdb; 
print_r($wpdb); 

你不會得到WordPress的數據庫對象(除非你直接包括categories.php內所需的文件

你應該使用內置的WordPress Ajax functions來處理Ajax請求

有很多教程解釋如何在WordPress中使用Ajax: