Javascript jQuery:Yahoo自动完成/自动建议

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",

我正在尝试检索yahoo autocomplete

雅虎的JSON url如下:

因此,我:

   $("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);

            }
        });
    }
});