我正在尝试检索雅虎自动填充功能。
Yahoo的JSON网址是:http://ff.search.yahoo.com/gossip?output=fxjson&command=query
所以我有:
$("selector").autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://ff.search.yahoo.com/gossip",
dataType: "jsonp",
data: {
"output" : "fxjson",
"command" : request.term
},
success: function( data ) {
response(data[1])
}
})
}
});
这是一个例子:http://jsfiddle.net/yQbdb/
有人能发现错误或我做错了吗?它应该工作。
由于
答案 0 :(得分:1)
将output
设为jsonp
对我有用。
有关输出的结构,请参阅example query。
解释如下。
代码 HERE 。
$("#wd6450").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://ff.search.yahoo.com/gossip",
dataType: "jsonp",
data: {
"output": "jsonp",
"command": request.term
},
success: function(data) {
var suggestions = [];
// for each element in the data.gossip.results array ...
$.each(data.gossip.results, function(i, val) {
// .. push the value of the key inside our array
suggestions.push(val.key);
});
// call response with our collected values
response(suggestions);
}
});
}
});
<强>解释强>
使用dataType: "jsonp"
jQuery期望输出格式为JSONP。当您使用output: "fxjson"
通过代码拨打电话时,网址看起来像 this ,但您可以看到输出不是有效的JSONP,因为未调用回调。
另一方面,当您指定output: "jsonp"
时,查询看起来像 this ,并且您可以看到输出是有效的JSONP - 调用了回调。
您在评论中链接了亚马逊示例。 $.ajax()
调用会尝试使用 this 之类的网址。 Amazon的webservice的输出是有效的JSONP,因为使用所有数据调用回调。
结果是:如果您通过将?output=jsonp
配置为$.ajax()
在URL中提供output: "jsonp"
参数,则Yahoo webservices将返回JSONP中的格式。 Amazon的webservice默认返回此格式,不带任何额外参数。这是特定于Web服务的配置,必须参考其文档或其他相关资源。
有关JSONP的信息 HERE 。