【问题标题】:jQuery autocomplete with rotten tomatoes api带有烂番茄api的jQuery自动完成功能
【发布时间】:2012-03-11 22:27:38
【问题描述】:

我正在尝试使用自动完成功能从 rottentomatoes 获取 JSON 格式的电影建议。 但是下面的代码没有显示任何建议。

<script>
var apikey = "5xq9w7z2mp7a6cnchkfy52yd";
var baseUrl = "http://api.rottentomatoes.com/api/public/v1.0";

var moviesSearchUrl = baseUrl + '/movies.json?apikey=' + apikey;
var query = "Rocky";

$(document).ready(function() {
$("#sample").autocomplete({
source: function( request, response ) {
         $.ajax({
           url: moviesSearchUrl + '&q=' + encodeURI(query),
           dataType: "jsonp",
           success: function(data) {
                     var movies = data.movies;
                     response(function(movies) {
                               return {
                                      label: movies.title,
                                      value: movies.title
                                      }
                     }));           
                    }
         });
        }
});
});
</script>

完整页面来源:https://gist.github.com/2018447 我还需要在建议列表中包含电影缩略图。谁能帮我解决这个问题?

【问题讨论】:

  • 你的错误控制台说什么?
  • b[0] 未定义文件://home/aaa/jqueryexample/js/jquery-ui-1.8.18.custom.min.js
  • 我已更新我的答案以包含海报缩略图。这应该可以解决您的问题

标签: javascript jquery jquery-ui jquery-autocomplete rotten-tomatoes


【解决方案1】:

您有一个语法错误(额外的))并且缺少对movies 数组进行迭代的调用(通常使用$.map())。

这应该是它的样子(更新:包括海报缩略图

$("#sample").autocomplete({
    source: function( request, response ) {
        $.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies.json", {
            data: {
                apikey: apikey,
                q: request.term
            },
            dataType: "jsonp",
            success: function(data) {
                response($.map(data.movies, function(movie) {
                    return {
                        label: movie.title,
                        value: movie.title,
                        thumb: movie.posters.thumbnail
                    }
                }));           
            }
        });
    }
}).data( "autocomplete" )._renderItem = function( ul, item ) {
    var img = $("<img>").attr("src", item.thumb);
    var link = $("<a>").text(item.label).prepend(img);
    return $("<li>")
        .data( "item.autocomplete", item )
        .append(link)
        .appendTo(ul);
};
​

这里的工作示例 - http://jsfiddle.net/df7tp/6/

【讨论】:

  • 耶!它正在工作。非常感谢 :) 顺便说一句.. 我可以使用 .data( "autocomplete" )._renderItem 在建议中包含缩略图吗?为此,我需要在响应部分添加图像键吗?
  • 谢谢@Phil 它看起来很可爱!
  • @rnk 只是一些剩余的调试。我已将其删除,但您应该熟悉浏览器的开发工具
  • 这太棒了!您对为什么这不能完全适用于多个输入有任何想法吗?我将#sample 更改为一个类,并在jsfiddle 中添加了更多。第一个工作正常,但不显示其他 3 的缩略图。你可以在这里看到它:jsfiddle.net/stueynet/D2upP
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多