jquery autocomplete返回[object Object]

时间:2014-08-21 18:44:13

标签: jquery json jquery-autocomplete

我一直在试图让这项工作靠在墙上。我不是很擅长这个,所以我确定我错过了一些简单的东西。我搜索了知识库,但我找不到有用的东西,而且我非常确定这是一种更好的方法来实现这一目标。

我试图让我的输入字段自动完成,但它返回[object Object]。任何帮助将不胜感激。谢谢!

jquery的:

<script>
$('#client_id').autocomplete({
    source: function( request, response ) {
        $.ajax({
            type: "POST",
            url: '/slips/suggest',
            dataType: "json",
            data: {
               user_input: request.term
            },
             success: function( data ) {
                 response( $.map( data, function( item ) {
                    return {
                        label: item,
                        value: item
                    }
                }));
            }
        });
    },
    autoFocus: true,
    minLength: 3
});
  </script>

json输出:

[{"label":"Doe, John","value":"1"},{"label":"Doe, Jane","value":"2"},{"label":"Doe, Jack","value":"3"},{"label":"Doe, Jake","value":"4"},{"label":"Doe, Jim","value":"5"}]

HTML:

<div style="height: 20px;float: left;display: inline-block;padding-top:15px;">
<span class="new_slip">Client</span>
<input type="text" id="client_id" name="client_id" style="width:100px;" />
</div>

1 个答案:

答案 0 :(得分:0)

回复中提供的data已在one of the structures that .autocomplete() expects

  
      
  •   
        
    • ...
    •   
    • 具有标签和值属性的对象数组:[ { label: "Choice1", value: "value1" }, ... ]
    •   
  •   

因此,在这种情况下,$.map()不是必需的。

// ...
success: response
// ...

您看到的[object Object].toString()的默认Object结果。

console.log({}.toString());
// "[object Object]"

而且,来自item的所有Objectlabelvalue

var data = [ {"label":"Doe, John","value":"1"} ];

data = $.map( data, function ( item ) {
    return {
        label: item,
        value: item
    }
});

console.log(data);
/*
[
    {
        label: { label: "Doe, John", value: 1 },
        value: { label: "Doe, John", value: 1 }
    }
]
*/