在 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的主要内容,如果未能解决你的问题,请参考以下文章

Commitlint - 在范围枚举中允许“/”

如何在无服务器中允许 CORS 用于自定义标头?

如何在自定义 terraform 提供程序资源中允许有序列表?

在符合 UIApperance 的自定义类中允许哪些 Swift 属性类型?

如何让 TypeScript 引擎在 JSX 中允许自定义 HTML 属性?

如何在旧版本的放心中允许自签名 SSL 证书