【问题标题】:jQuery autocomplete do not work with jsonjQuery 自动完成功能不适用于 json
【发布时间】:2013-06-06 20:25:57
【问题描述】:

如果我将 php 文件作为源调用,则不会自动完成,但如果我使用数组,它会起作用。

PHP

$query = mysql_query($req);

while($row = mysql_fetch_assoc($query))
    {
        $results[] = array('login' => $row['login']);
    }

echo json_encode($results);

//[{"login":"lleal"},{"login":"mmoura"},{"login":"vmatos"},{"login":"csamante"}]

HTML

$( "#logine" ).autocomplete(
{
     source: 'loginsearch.php',
})

如果我将 json 转换为这样的数组,它可以工作:

    var lista = [];
    $.ajax({
        type: "GET",
        dataType: "json",
        url: "loginsearch.php",
        success: function (data) {
            $.each(data, function (index, data) {
                lista.push(data.login);
            });
        }
    });   


$( "#logine" ).autocomplete(
{
     source: lista,
})

我花了一整天的时间来解决这个问题,有什么想法吗?

【问题讨论】:

  • 你的 echo 语句是否返回数据?
  • 哦,你的 JS 中还有一个额外的逗号 source: 'loginsearch.php',...除非你后面有更多代码
  • 这是stackoverflow.com/questions/4234455/… 的完全相同的副本 去那里找到你的答案。完全相同,尽管您可能需要更改输出,例如 //[{"id":"1, "value":"lleal"}

标签: php jquery ajax arrays json


【解决方案1】:

您的 JSON 必须包含变量 'label' 和 'value' 才能使自动完成工作。

试试

while($row = mysql_fetch_assoc($query))
    {
        $results[] = array('label' => $row['login'], 'value' => $row['login']);
    }

或任何你喜欢显示为值和标签的东西。

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2023-03-27
    • 2013-07-16
    • 2011-10-16
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多