javascript - jquery-autocomplete:serviceUrl来过滤lookupFilter()中显示的结果

标签 javascript php mysql jquery-autocomplete

我正在使用jQuery-Autocomplete我想使用 serviceUrl 作为输入字段的库,而不是针对本地数据作为建议,它为脚本提供了一个包含文件列表的 JSON 文件。在 demo (第 30-47 行)由库作者提供,然后我将 lookup:countriesArray, 替换为 serviceUrl: 'retrieve_foreign_countries.php',

<?php // retrieve_foreign_countries.php

include 'init_db.php';
include 'functions.php';

prepareForeignCountriesJson($db);

?>

其中 prepareForeignCountriesJson() 定义为

function prepareForeignCountriesJson($db) {

  $sql = 'SELECT country_code AS code, country_name AS value FROM foreign_country ORDER BY value;';
  $stmt = $db->prepare($sql);
  $stmt->execute();
  $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

  echo "{\"query\": \"Unit\", \"suggestions\": ".json_encode($result)."}";

}

输入某些文本时的查找效果很好,但不会根据输入文本过滤结果,而是提供完整的国家/地区列表。换句话说,该函数(在 demo 第 34-37 行)

 lookupFilter: function(suggestion, originalQuery, queryLowerCase) {
var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi');
return re.test(suggestion.value);
},

正如库作者所解释的那样( here ),此后就不再启动

When using serviceUrl option, it is server responsibility to filter results.

那么,我从哪里开始使用我的 serviceUrl 获取与加载本地数据时相同的结果?我是否需要过滤 prepareForeignCountriesJson() 中的查找数据?但是调用了多少次 prepareForeignCountriesJson() 呢?每次用户在字段中输入一些字符时?

最佳答案

也许您的 SELECT 缺少 WHERE 子句:

$sql = "SELECT ... WHERE country_name LIKE CONCAT('$prefix', '%') ORDER BY ...";

(请注意,我更改为双引号,以便可以“插入”$前缀。)

关于javascript - jquery-autocomplete:serviceUrl来过滤lookupFilter()中显示的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28663986/

相关文章:

JavaScript 创建新的 "Thread"

javascript - 类型错误 : Cannot create property 'next' on number '8080'

PHP 将字符串转换为数组再转换为字符串

php - MySQL 更新 "link"表

javascript - 离线待办事项网页

javascript - 将 jSTL 值传递给 javascript

php - 基于 MySQL 列数据类型的动态 PHP 代码创建

mysql - 尝试查找平均值最大的记录 (SQL)

php - 如果提供的 PDO 参数多于需要,如何检查 PHP

python - 为什么 Python/Django 不会在 Mysql : ERROR 1205 (HY000): Lock wait timeout exceeded 上引发异常