jquery自动完成不适用于JSON数据

Posted

技术标签:

【中文标题】jquery自动完成不适用于JSON数据【英文标题】:jquery autocomplete not working with JSON data 【发布时间】:2011-05-13 04:15:28 【问题描述】:

我的 php 代码将 JSON 数据返回到 jquery 自动完成但自动完成不起作用

jQuery 自动完成

$("input#txtaddkey").autocomplete(
            source: "keyword.php",
                minLength: 2
        );

PHP 代码

$fetch = mysql_query("SELECT * FROM o_keyword where keyword like '%" . $query . "%'"); 

    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) 
        $row_array['id'] = $row['id'];
        $row_array['keyword'] = $row['keyword'];

        array_push($return_arr,$row_array);
    
echo json_encode($return_arr);

JSON 数据输出

["id":"2","keyword":"Games","id":"3","keyword":"Goa"]

在输入“Ga”时,我在前端得到了空的 li 标签。

【问题讨论】:

你的“keyword.php”真的返回了什么吗?请与 firegug ... 是的,它返回 ["id":"2","keyword":"Games","id":"3","keyword":"Goa"]跨度> 【参考方案1】:

发件人:

http://jqueryui.com/demos/autocomplete/

您的 JSON 需要包含 labelvalue(或两者)。将keyword 更改为value,它应该可以正常工作。

【讨论】:

【参考方案2】:

您的代码需要稍作修改。

 while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) 
    $row_array['value'] = $row['id'];
    $row_array['label'] = $row['keyword'];

    array_push($return_arr,$row_array);

回显 json_encode($return_arr);

现在你的 json 格式将是

["value":"2","label":"Games","value":"3","label":"Goa"]

【讨论】:

以上是关于jquery自动完成不适用于JSON数据的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .val() 不适用于 jQueryUI 自动完成功能

jquery 自动完成功能不适用于重音

自动完成不适用于 jquery 中的相同输入

自动完成不适用于值数组

ASP.NET List<> 用于 JQuery 的 AJAX 自动完成。 ?转换为 JS JSON 或 ajax 调用

淘汰赛和 jQuery 自动完成