在 jquery ui 自动完成中允许 null
Posted
技术标签:
【中文标题】在 jquery ui 自动完成中允许 null【英文标题】:Allow null in jquery ui Autocomplete 【发布时间】:2017-08-29 19:13:10 【问题描述】:我目前收到此错误。
未捕获的类型错误:无法读取 null 的属性“标签”
return $.extend( , item,
label: item.label || item.value,
value: item.value || item.label
);
这行代码是 jquery-ui 中给我的错误。
我知道导致错误的是空值。 我怎么能允许它或者如果不阻止 null 值作为结果之一返回?
这里是mysql查询:
$get_company = "SELECT DISTINCT companies.company,companies.company_id
FROM companies
INNER JOIN target_details
ON companies.company_id = target_details.company_id
WHERE companies.company LIKE \"%$company%\"
LIMIT 1500 OFFSET 10
";
if($run_company = $conn->query($get_company))
while($row = $run_company->fetch_assoc())
$data[] = $row['company'].$row['company_id'];
echo json_encode($data);
【问题讨论】:
您可以通过在分配前检查(item.label === null) ? "null" : item.label
来设置条件。
item
到底是什么?好像是null
。
我不太清楚。我只是在使用这个 jquery autcomplete 库。它给了我和 jquery-ui.js 的错误,这在我的项目文件夹中不存在。
如何生成item
?你从哪里得到它?
@Qirel 每次触发jquery自动补全功能。
【参考方案1】:
我认为最好在查询中将空值“转换”为空字符串,例如:
更新:您还需要更改循环。
$get_company = "SELECT DISTINCT NVL(companies.company, ''), NVL(companies.company_id, 0)
FROM companies
INNER JOIN target_details
ON companies.company_id = target_details.company_id
WHERE companies.company LIKE \"%$company%\"
LIMIT 1500 OFFSET 10
";
if($run_company = $conn->query($get_company))
while($row = $run_company->fetch_assoc())
$data_row["label"] = $row['company'].$row['company'];
$data_row["value"] = $row['company'].$row['company_id'];
array_push($data, $data_row);
echo json_encode($data);
【讨论】:
您还必须更改代码以在$data
数组中添加记录,请参阅我的更新答案。
试图将限制减少到 500 以验证它是否只是服务器响应缓慢。我仍然没有得到结果。
您的 json 应该包含 label/value
属性,我又更新了一次代码。可能NVL
不是必需的。
我应该删除 nvl 吗?
是的,它永远不可能为空【参考方案2】:
尝试使用Ternary operator:
return $.extend( , item,
label: item.label ? item.label : item.value,
value: item.value ? item.value : item.label
);
【讨论】:
我应该在 jquery-ui.js 中这样做吗?以上是关于在 jquery ui 自动完成中允许 null的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义 terraform 提供程序资源中允许有序列表?
在符合 UIApperance 的自定义类中允许哪些 Swift 属性类型?