Javascript jQuery:Yahoo自动完成/自动建议
我正在尝试检索yahoo autocomplete 雅虎的JSON url如下: 因此,我:Javascript jQuery:Yahoo自动完成/自动建议,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我正在尝试检索yahoo autocomplete 雅虎的JSON url如下: 因此,我: $("selector").autocomplete({ source: function( request, response ) { $.ajax({ url: "http://ff.search.yahoo.com/gossip", dataType: "jsonp",
$("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])
}
})
}
});
下面是一个例子:
有人能发现错误或我做错了什么吗?它应该会起作用
谢谢设置
输出到jsonp
对我有用
有关输出的结构,请参见
解释如下
代码是
$("#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);
}
});
}
});
说明:
通过使用数据类型:“jsonp”
jQuery期望输出格式为jsonp。当您使用output:“fxjson”
从代码中调用时,URL看起来像,但是您可以看到,输出不是有效的JSONP,因为没有调用回调
另一方面,当您指定输出:“jsonp”
时,查询看起来像,您可以看到输出是一个有效的jsonp-调用了回调
您在评论中链接了一个Amazon示例$.ajax()
调用将尝试像一样访问URL。Amazon的webservice的输出是有效的JSONP,因为回调是用所有数据调用的
因此,结果是:如果您通过配置$.ajax()
和输出:“JSONP”
在URL中提供?output=JSONP
参数,Yahoo webservices将返回JSONP格式。默认情况下,Amazon的webservice返回此格式,不带任何额外参数。这是特定于Web服务的配置,必须与其文档或其他相关资源进行协商
关于JSONP的信息是可用的,这是正确的,但对我来说没有意义。你能不能把它分解给我,这样我将来也能用它?因为假设我使用的是ebay的autosuggest:它没有输出,等等。Thanks@jQuerybeast将output
设置为fxjson
会使$生气。ajax
因为没有调用JSONP回调。我通过向ajax调用添加错误处理程序找到了它。然后我尝试更改输出
,它开始工作。JSONP正在从数据类型调用。如果您必须将输出设置为jsonp,这是如何工作的:?@jQuerybeast:但是数据类型:“jsonp”
是$.ajax的一个选项,而不是yahoo八卦网站服务的一个参数。正如您所看到的,更改输出
会强制webservice以不同的形式提供数据,这与为JSONP配置的$.ajax
一起使用。谢谢。现在听起来更直截了当了。你能用data.gossip.results给我解释一下最后三行吗?如果不是流言蜚语,您是否总是必须设置数据。[最后一个url路径]。结果?
$("#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);
}
});
}
});