WP AJAX操作未拾取查询字符串参数

时间:2018-08-06 作者:Summer Developer

不知道为什么这不起作用。。。我的操作正在被传递,正确的函数正在从ajax中启动,但回调没有接收到query 参数

我的ajax(使用bloodhound.js 从管理屏幕运行,因此无需localize):

new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace(\'value\'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
  url: ajaxurl,
  prepare: function(query,settings){
    settings.url = settings.url + \'?query=\' + query + \'&action=\' + \'find_posts\'
    return settings;
    }
  }
})
如果您不熟悉猎犬,则它呈现的查询如下所示:

admin-ajax.php?query=fdsafpasdjflkdsajkfg&action=find_posts

在这里fdsafpasdjflkdsajkfg 只是我(沮丧地)键入的搜索字符串。因此,我知道它正在发送正确的查询字符串,我也知道,因为我得到的错误源于触发的正确操作。

我的错误是

PHP致命错误:在null上调用成员函数esc\\u like()

它源于:

add_action( \'wp_ajax_find_posts\', \'find_posts\' );

function find_posts(){
$query = $_GET[\'query\'];
$value = \'%\'.$wpdb->esc_like($query).\'%\'; //ERROR HERE
$sql = $wpdb->prepare("SELECT ID, post_title 
        FROM {$wpdb->prefix}posts
        WHERE post_title LIKE %s
        ORDERBY BY ID", $value);
    $posts = $wpdb->get_results($sql);
    return json_encode($posts);
    wp_die();
}
所以问题是,为什么$_GET[\'query\']; 正在解析为null 当它在我的查询字符串中时?

1 个回复
最合适的回答,由SO网友:nmr 整理而成

添加global $wpdb; 在功能中find_posts(), 使用前$wpdb;

结束