jQuery:Yahoo Autocomplete/Autosuggest

jQu*_*ast 5 javascript jquery autocomplete

我正在尝试检索雅虎自动完成.

雅虎的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])
                }
            })
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是一个例子:http://jsfiddle.net/yQbdb/

有人可以发现错误或我做错了吗?它应该工作.

谢谢

kub*_*etz 1

设置output为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);

            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

解释:

通过使用dataType: "jsonp"jQuery,期望输出格式为 JSONP。output: "fxjson"当您使用URL从代码中进行调用时,看起来像这样,但您可以看到输出不是有效的 JSONP,因为未调用回调。

另一方面,当您指定output: "jsonp"查询时,如下所示,并且您可以看到输出是有效的 JSONP - 调用了回调。

您在评论中链接了一个亚马逊示例。$.ajax()调用那里将尝试这样的URL 。Amazon Web 服务的输出是有效的 JSONP,因为回调是使用所有数据调用的。

所以结果是:如果您通过配置在 URL 中提供参数,Yahoo Webservices 将返回JSONP?output=jsonp格式。亚马逊的网络服务默认返回此格式,无需任何额外参数。这是特定于 Web 服务的配置,必须查阅其文档或其他相关资源。$.ajax()output: "jsonp"

有关 JSONP 的信息可在此处获取。