【问题标题】:Autocomplete issue: Content is not displaying自动完成问题:内容未显示
【发布时间】:2016-09-20 10:29:57
【问题描述】:

如下面的屏幕截图所示,未显示的内容是自动编译列表。

我收到此回复。

[{"emp_number":1,"fname":"Arslan","lname":"Hassan"},{"emp_number":2,"fname":"Muneeb","lname":"Janjua" },{"emp_number":3,"fname":"hr","lname":"user"},{"emp_number":4,"fname":"test","lname":""} .. ........ 删除以使其在这里看起来更好 .......]

我的 JS 代码:

$( "#search-emp" ).autocomplete(
{
    source: function (request, response)
    {
        var form_data = {
            ajax                : '1',
            name                : $("#search-emp").val(),
            actioncall          : 'search-emp'
        };

        $.ajax({
            //contentType: "application/json",
            type: "POST",
            dataType: 'json',
            url: "_ajax.php",
            data: form_data,
            success: function( data )
            {
                response( data );
            }
        });
    },
    minLength:3,
    select:function(evt, ui)
    {
        alert(ui.item.emp_number);
    }
});

我想在 input 字段中选择时显示 fnamelname

【问题讨论】:

  • 你能在response(data) 之前console.log(data) 并添加到问题中以查看服务器的响应。列表应该有名称或将显示的字段的一些特定键。
  • @DanielDudas我已经回答了我的问题。请立即查看。

标签: php jquery json autocomplete


【解决方案1】:

问题是因为 jQuery 自动完成希望有两个名为 labelvalue 的字段。来自label 的内容将显示在自动完成中。

因为您的服务器会为您的密钥返回其他名称,所以您有 2 个选项:

  1. 更改服务器以返回类似的 json:

    [{"emp_number":1,"fname":"Arslan","lname":"Hassan", "label":"Arslan Hassan", "value": "Arslan Hassan"},....]

  2. 或者在来自 ajax 的成功回调上创建一个包含此字段的数组(labelvalue)并将此数组传递给 response() 回调。

您可以在这里找到更多信息:http://api.jqueryui.com/autocomplete/#option-source

【讨论】:

  • 谢谢。我按照您的建议更改了json 响应。它不仅有效,而且只有一个问题。我只在input 字段中填写了名字。
  • @Hassaan 您需要将名字和姓氏连接到label,这样两者都将显示在自动完成中。
猜你喜欢
  • 2023-03-09
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多