【问题标题】:Select2 Not Displaying Ajax Response, tmdb dataSelect2 不显示 Ajax 响应,tmdb 数据
【发布时间】:2020-10-05 17:39:20
【问题描述】:

在将其标记为重复之前,请仔细阅读..

我正在使用 select2 通过 ajax 选择远程数据。

我可以通过 console.log 查看返回的数据,但使用 select2 选项时不会显示响应。

我正在从“themoviedb”api 中搜索电影标题,以将它们作为自动完成建议显示在选择字段中。 任何帮助将不胜感激

<html>
<head>
<title>Movie</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/css/select2.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>

</head>
<body>

Search Movie Title: <select class="search-movie" style="width:300px;"></select>

<script>
  $(".search-movie").select2({
    minimumResultsForSearch: 10,
    ajax: {
    delay: 250,
    url: 'http://api.themoviedb.org/3/search/movie',
    dataType: 'json',
    contentType: "application/json",
    type: 'GET',
    data: function (params) {
    var query = {
      api_key : 'fe4d662718177607da792694a52e7911',
      query: params.term
    }
   return query;
  },
  processResults: function (data) {
      return {
          results: $.map(data.items, function (item) {
              return {
                  text: item.original_title,
                  id: item.id
              }
              console.log(results);
          })
      };
  }
},
});


</script>

</body>
</html>

【问题讨论】:

    标签: jquery ajax jquery-select2 themoviedb-api


    【解决方案1】:

    使用 Easy 自动完成功能,我能够复制相同的功能

    <html>
    <head>
    <title>Movie Search</title>
    <!-- CSS file -->
    <link rel="stylesheet" href="EasyAutocomplete/easy-autocomplete.min.css">
    
    <!-- Additional CSS Themes file - not required-->
    <link rel="stylesheet" href="EasyAutocomplete/easy-autocomplete.themes.min.css">
    
    </head>
    <body>
    <input id="provider-remote" />
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
    <!-- JS file -->
    <script src="EasyAutocomplete/jquery.easy-autocomplete.min.js"></script>
    
    <script>
    
    var options = {
        url: function(phrase) {
            if (phrase !== "") {
                return "http://api.themoviedb.org/3/search/movie?api_key=fe4d662718177607da792694a52e7911&query=" + phrase + "&format=json";
            } else {
                return "http://api.themoviedb.org/3/search/movie?api_key=fe4d662718177607da792694a52e7911&query=";
            }
        },
    
        getValue: "original_title",
    
        ajaxSettings: {
            dataType: "jsonp"
        },
    
        listLocation: "results",
    
        requestDelay: 300,
    };
    
    $("#provider-remote").easyAutocomplete(options);
    </script>
    </body>
    
    </html>

    【讨论】:

      【解决方案2】:

      我已经尝试过您的代码,问题在于您映射数据的方式。响应是在您访问项目键的结果键中发送的。将 $.map(data.items) 更改为 $.map(data.results) 就可以了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-16
        • 1970-01-01
        • 2016-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        相关资源
        最近更新 更多