我一直在试图让这项工作靠在墙上。我不是很擅长这个,所以我确定我错过了一些简单的东西。我搜索了知识库,但我找不到有用的东西,而且我非常确定这是一种更好的方法来实现这一目标。
我试图让我的输入字段自动完成,但它返回[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>
答案 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
的所有Object
,label
和value
:
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 }
}
]
*/