1

尝试使用 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

所以,是的,我哪里错了?

一旦我得到它返回数据,我有另一个格式问题要问你:)

4

2 回答 2

1

@Xeevis 的回答几乎是正确的。

第一:“前置多字符”是 jQuery 在进行跨域请求时在内部执行 JSONP 的方式。

第二:Xeevis 是对的,问题是valueKey,但不仅仅是valueKey。响应必须是一个对象数组,每个对象都包含一个由 指定的名称的成员valueKey。所以设置valueKey"name",还要返回一个数组:

filter: function (parsedResponse) {
    console.log(parsedResponse);
    return parsedResponse.locations;
}
于 2013-10-31T14:34:09.853 回答
0

默认情况下,Typeahead 在数据中期望“值”。将 valueKey 更改为“名称”。

$autocomplete.typeahead({
    valueKey: 'name',
    name: 'location',
    remote: { ... }
});
于 2013-10-31T12:22:29.700 回答