预先输出结果格式

时间:2013-10-31 11:01:11

标签: jsonp bootstrap-typeahead typeahead typeahead.js

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

所以是的,我哪里错了?

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

2 个答案:

答案 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: { ... }
});