【问题标题】:Allow null in jquery ui Autocomplete在 jquery ui 自动完成中允许 null
【发布时间】: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自动补全功能。

标签: javascript jquery mysql jquery-ui


【解决方案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 中这样做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多