jQuery:Yahoo Autocomplete / Autosuggest

时间:2011-12-05 03:09:44

标签: javascript jquery autocomplete

我正在尝试检索雅虎自动填充功能。

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/

有人能发现错误或我做错了吗?它应该工作。

由于

1 个答案:

答案 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