我已将一个字段设置为“自动完成/自动建议”,但键入时未显示下拉列表。我可以看到管理ajax。php请求和Chrome Developer Tools的Network选项卡中返回的数据,似乎可以很好地检索建议。我真的不知道如何进一步排除故障,并解决问题。
Javascript如下所示:
<script type="text/javascript">
var se_ajax_url = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
jQuery(document).ready(function() {
console.log(jQuery(\'#body-type\').suggest(se_ajax_url + \'?action=se_lookup\'));
});
</script>
下面是我添加到wordpress的代码:
<?php
add_action(\'wp_enqueue_scripts\', \'se_wp_enqueue_scripts\');
function se_wp_enqueue_scripts() {
wp_enqueue_script(\'suggest\');
}
add_action(\'wp_head\', \'se_wp_head\');
function se_wp_head() {
?>
<script type="text/javascript">
var se_ajax_url = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
jQuery(document).ready(function() {
console.log(jQuery(\'#body-type\').suggest(se_ajax_url + \'?action=se_lookup\'));
});
</script>
<?php
}
add_action(\'wp_ajax_se_lookup\', \'se_lookup\');
add_action(\'wp_ajax_nopriv_se_lookup\', \'se_lookup\');
function se_lookup() {
global $wpdb;
$search = like_escape($_REQUEST[\'q\']);
$query = \'SELECT DISTINCT meta_value FROM \'.$wpdb->postmeta.\'
WHERE meta_value LIKE \\\'\'.$search.\'%\\\'
AND meta_key = \\\'machinery_bodyType\\\'
LIMIT 5\';
foreach ($wpdb->get_results($query) as $row) {
$value = $row->meta_value;
echo $value."\\n";
}
die();
}
?>
最合适的回答,由SO网友:Eric Holmes 整理而成
我会使用.ajax()
而不是.suggest()
在jQuery中。
jQuery.ajax({
type : "post",
url : myAjax.ajaxurl,
data : {
action: \'se_lookup\',
},
success: function( result ) {
console.log(result);
}
});
现在,您应该可以从SQL返回这些值。