我试图使用devbridge jquery autocomplete lib来提取wunderground.com的自动完成API,并且我一直被阻止。无论我是否将cb附加到serviceUrl,它都无法解析返回的json。响应的前缀为" {结果:[{我要使用的数组数据}]}"。
当我使用文档中提供的自动完成代码时,它会显示" Uncaught SyntaxError:意外的令牌:"
当我将& cb = myresults 应用于serviceUrl时,我得到了#34; Uncaught ReferenceError:myresults未定义"
我的代码是:
var options, a;
$(function(){
options = {
serviceUrl:'http://autocomplete.wunderground.com/aq?c=US&format=jsonp&cb=myresults',
minChars: 7,
dataType : "jsonp",
transformResult: function(response) {
response = JSON.parse(response);
return {
suggestions: $.map(response.myData, function(dataItem) {
return { value: dataItem.name, data: dataItem.zmw };
})
};
}
};
a = $('#autoLocation').autocomplete(options);
});
wunderground API是:http://www.wunderground.com/weather/api/d/docs?d=autocomplete-api devbridge autocomplete git是:https://github.com/devbridge/jQuery-Autocomplete 来自wunderground的示例回复是:http://autocomplete.wunderground.com/aq?c=US&format=jsonp&cb=myresults&query=san%20f
我已经茫然几天了,而且我确定我正在寻找一些非常简单的东西。非常感谢任何帮助或指导。
答案 0 :(得分:8)
要实现这一点,你需要修改源码,因为jquery jsonp默认的callaback查询字符串键不是" cb",而是"回调"。因此,在自动完成源中添加:jsonp:' cb'
that.currentRequest = $.ajax({
url: serviceUrl,
data: params,
type: options.type,
jsonp: 'cb',
dataType: options.dataType
}).done(function (data) {
然后你的代码应该是:
var options, a;
$(function(){
options = {
serviceUrl:'http://autocomplete.wunderground.com/aq?c=US&format=jsonp',
minChars: 2,
dataType : "jsonp",
transformResult: function(response) {
console.log('response', response);
return {
suggestions: $.map(response.RESULTS, function(dataItem) {
return { value: dataItem.name, data: dataItem.zmw };
})
};
}
};
a = $('#autoLocation').autocomplete(options);
});
这对我来说很好。