2016-03-02 70 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: