尝试使用Typeahead并努力使用JSON格式(我无法控制)。
{ name="Long Island", type="2", id="1234"}
这是我的JS
$autocomplete.typeahead({
name: 'location',
remote: {
url: 'http://pathtomysite.com/%QUERY?',
dataType: 'jsonp',
filter: function (parsedResponse) {
console.log(parsedResponse);
return parsedResponse;
}
},
template: [
'<p class="repo-name">{{name}}</p>',
'<p class="repo-description">{{id}}</p>'
].join(''),
engine: Hogan
});
因此请求有效并且它在控制台中返回对象,但是预先输入的视觉下拉列表显示为“未定义”。
所以我猜我需要对基准做点什么?
我尝试过使用Hogan模板,但下拉中没有出现任何内容。
不确定JSONP是否是这个问题?请求前面加载了一些字符,请参阅JS选项卡 http://jsbin.com/aPOZohi/1/edit
所以是的,我哪里错了?
一旦我得到它返回数据,我还有另一个格式化问题:)
答案 0 :(得分:1)
@ Xeevis的回答几乎是正确的。
首先:“许多字符前置”是jQuery在进行跨域请求时在内部执行JSONP的方式。
第二:Xeevis是对的,问题是valueKey
,但不仅仅是valueKey
。响应必须是一个对象数组,每个对象都包含valueKey
指定的名称的成员。所以将valueKey
设置为"name"
,但也返回一个数组:
filter: function (parsedResponse) {
console.log(parsedResponse);
return parsedResponse.locations;
}
答案 1 :(得分:0)
默认情况下,Typeahead在数据中需要“value”。将valueKey更改为“name”。
$autocomplete.typeahead({
valueKey: 'name',
name: 'location',
remote: { ... }
});