【问题标题】:Typeahead result formatting预输入结果格式
【发布时间】:2013-10-31 11:01:11
【问题描述】:

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

是啊,我哪里错了?

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

【问题讨论】:

    标签: jsonp bootstrap-typeahead typeahead typeahead.js


    【解决方案1】:

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

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

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

    filter: function (parsedResponse) {
        console.log(parsedResponse);
        return parsedResponse.locations;
    }
    

    【讨论】:

    【解决方案2】:

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

    $autocomplete.typeahead({
        valueKey: 'name',
        name: 'location',
        remote: { ... }
    });
    

    【讨论】:

    • 那也行不通。 jsbin.com/aPOZohi/2/edit console.log 返回正确的东西,只是没有任何视觉显示。也没有错误。霍根绝对包括在内(
    猜你喜欢
    • 2014-09-22
    • 2014-12-13
    • 1970-01-01
    • 2013-05-09
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多