不知道为什么这不起作用。。。我的操作正在被传递,正确的函数正在从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
当它在我的查询字符串中时?