2013-10-31 64 views
0

试图使用Typeahead并与JSON格式(我无法控制)挣扎。Typeahead结果格式

{ 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 

});

所以请求起作用,它会返回控制台中的对象,但typeahead可视化下拉菜单只是说'未定义'。

所以我猜我需要做一些基准?

我试过使用Hogan模板,但没有出现在下拉菜单中。

不知道JSONP是否是这个问题?该请求有一个前加载的字符,请参阅JS选项卡 http://jsbin.com/aPOZohi/1/edit

所以是的,我哪里会出错?

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

回答

1

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

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

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

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

是的,它对它进行了排序,谢谢!现在,我有另一个问题,我现在要写出来... – Leads

+0

跟进问题http://stackoverflow.com/questions/19722627/typeahead-templating-if-else – Leads

0

的预输入,默认情况下,在基准期望“值”。将valueKey更改为“name”。

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

,不能正常工作。 http://jsbin.com/aPOZohi/2/edit console.log返回正确的东西,只是没有任何显示。没有错误。 (\t ) – Leads