javascript - 在 WordPress 中使用自动完成会导致一些错误
问题描述
我目前正在尝试将自动完成添加到我页面上的输入中,当我开始输入时它应该动态返回搜索结果。基本上,一切正常,但我在前端遇到错误并且没有显示结果:
Uncaught TypeError: Cannot read property 'suggestions' of null
at t.processResponse (jquery.autocomplete.min.js:1)
at Object.<anonymous> (jquery.autocomplete.min.js:1)
at i (jquery.js:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at x (jquery.js:4)
at XMLHttpRequest.c (jquery.js:4)
Uncaught TypeError: Cannot read property 'length' of undefined
at t.verifySuggestionsFormat (jquery.autocomplete.min.js:1)
at t.processResponse (jquery.autocomplete.min.js:1)
at Object.<anonymous> (jquery.autocomplete.min.js:1)
at i (jquery.js:2)
at Object.fireWith [as resolveWith] (jquery.js:2)
at x (jquery.js:4)
at XMLHttpRequest.c (jquery.js:4)
这是我的 JS 函数:
<script>
jQuery( document ).ready( function () {
let searchAutocompleteUrl = "<?= admin_url( 'admin-ajax.php' ) ?>?action=search_autocomplete";
jQuery( 'input[type=search]' ).devbridgeAutocomplete( {
serviceUrl: searchAutocompleteUrl,
minLength: 3
} );
} );
</script>
这是我的 PHP 函数:
add_action( 'wp_ajax_search_autocomplete', 'search_autocomplete' );
add_action( 'wp_ajax_nopriv_search_autocomplete', 'search_autocomplete' );
function search_autocomplete() {
$args = array(
'post_type' => 'product',
);
$products = new WP_Query( $args );
$items = array();
if ( $products !== null ) {
foreach ( $products->posts as $result ) {
$items[] = $result->post_title;
}
}
echo json_encode( $items );
wp_die();
}
这是我开始输入时收到的结果:
["dsdfsduzfgsdufzgsdfuzgsuzgfuszgdfuzgsdf","sdfsdfusfiusuzsuzsfuzgfuzgsduzgusdzgf","Ich bin ein Hund"]
你有什么想法我可以完成这件事吗?
解决方案
推荐阅读
- django - 在 Kubernetes Engine 上运行 Django 的 PATH_TO_CREDENTIAL_FILE 是什么?
- java - 测试无法解析为所有导入的类型
- jquery - 使用 addClass() 后如何定位一个类?
- hive - Hive 中的窗口函数 avg with - over(按 colName 排序)
- pseudocode - 您可以在伪代码的 if 语句中使用复合条件吗?
- excel - 如何检查字符串是否是 Excel VBA 中的有效 HHMMSS 值?
- python - 如何将 csv 文件上传到谷歌驱动器并将其从同一个文件中读取到 python
- php - 在 Zend Framework 3 中捕获异常
- c - 进程在 SIGINT 信号后死亡
- android - Google Drive API 注销