【问题标题】:OMDb API search with JQuery / JSON not working使用 JQuery / JSON 的 OMDb API 搜索不起作用
【发布时间】:2017-05-01 00:44:56
【问题描述】:

我正在学习使用 API。我正在尝试在 OMDb API 中搜索电影标题,然后让电影图像/海报出现在我的网站中。我无法让这段代码正常工作,如果知道我哪里出错了,我会很感激。先感谢您。

     // Creating the AJAX Request
//
$('form').submit(function(event) {
  // Stop the form from submitting
  event.preventDefault();

  // Get The value from the form
  var movieURL = "http://www.omdbapi.com/?";
  var movieName = $('#search').val();
  var movieOptions = {
    s: "",

  };

  function displayMovies(data) {
    var movieHTML = '<ul>';
    $.each(data.items, function(index, value) {
      movieHTML += '<li>';
      movieHTML += '<img ';
      movieHTML += 'src="' + value.Poster + '" ';
      movieHTML += 'alt="' + value.Title + '" >';
      movieHTML += '</li>';
    });//end each
    movieHTML += '</ul>';
    $('movieInformation').html(movieHTML);

  }
  $.getJSON(movieURL, movieOptions, displayMovies);// end getJSON

}); // end submit function



  <div class="heading">
        <h1>Movie Search</h1>
        <form>
          <label for="search">Type a movie title</label>
          <input type="search" name="search" id="search">
          <input type="submit" value="Search" id="submit">
        </form>

      </div>



    <div id="movieInformation">
    </div>

【问题讨论】:

  • 您能否更具体地了解该问题。浏览器控制台是否有错误。
  • 您好,我没有在控制台中显示任何错误。所以我想我在请求信息时遗漏了一些东西。我打开网络设置,点击提交时看不到任何信息。我想知道是否 // 从表单中获取值 var movieURL = "omdbapi.com?"; var movieName = $('#search').val(); var movieOptions = { s: "", };是正确的,或者如果我需要另一个变量来存储搜索请求?
  • 你能提供一个sn-p或一个小提琴吗?
  • 为什么要在提交处理程序中编写函数displayMovies
  • 您好,我所做的课程向我展示了这种使用 API 的方法,这就是我遵循这种语法的原因。任何建议表示赞赏。 jsfiddle.net/wrfpw961

标签: jquery json api


【解决方案1】:

我注意到的一些事情:

movieURL 不是根据 API 正确构造的 URL。您发送的请求不包括搜索值。你有:

"http://www.omdbapi.com/?" 而不是:

"https://www.omdbapi.com/?t="+movieName

响应是一个对象,不包含“items”属性:

$.each(data.items, function(index, value) {

我创建了一个 fiddle,它记录了您的回复 data 的内容。您将确切地看到您可以访问哪些属性。

https://jsfiddle.net/um69o5t3/1/

更新:

以下是我所做的更改:

$('form').submit(function(event) {
  // Stop the form from submitting
  event.preventDefault();

  // Get The value from the form
  var movieName = $('#search').val();
  var movieURL = "https://www.omdbapi.com/?t="+movieName;

  var movieOptions = {
    s: "",

  };

  function displayMovies(data) {
  console.log(data);
   /* var movieHTML = '<ul>';
    $.each(data.items, function(index, value) {
      movieHTML += '<li>';
      movieHTML += '<img ';
      movieHTML += 'src="' + value.Poster + '" ';
      movieHTML += 'alt="' + value.Title + '" >';
      movieHTML += '</li>';
    });//end each*/
    console.log(data.Title);
        var movieHTML = '<ul>';
      movieHTML += '<li>';
      movieHTML += '<img ';
      movieHTML += 'src="' + data.Poster + '" ';
      movieHTML += 'alt="' + data.Title + '" >';
      movieHTML += '</li>';
    
    movieHTML += '</ul>';
    $('#movieInformation').html(movieHTML);

  }
  $.getJSON(movieURL, movieOptions, displayMovies);// end getJSON

}); // end submit function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="heading">
        <h1>Movie Search</h1>
        <form>
          <label for="search">Type a movie title</label>
          <input type="search" name="search" id="search">
          <input type="submit" value="Search" id="submit">
        </form>

      </div>



    <div id="movieInformation">
    </div>

【讨论】:

  • 祝你好运,如果您遇到问题,我很乐意为您提供帮助。
  • 谢谢 Tony M。这正是我无法解决的问题!如果你看到这个,你能告诉我你在哪里看到正确的端点来使用 var movieURL = "omdbapi.com/?t=";所以我知道如何在未来看起来更有效?
  • 不!通常,需要您发送搜索查询的 API 将通过 url(查询参数)接受这些搜索查询。文档omdbapi.com 有一个“参数”部分,它向您展示了各种可用的搜索参数——标题就是其中之一。示例部分还向您展示了一个正确构建的 URL。根据经验,如果您将信息(例如电影标题)发送到端点并且您无法指出该信息是从哪里发送的,则说明有问题。
  • 感谢您的帮助。答案已被接受。
猜你喜欢
  • 1970-01-01
  • 2012-12-28
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2015-09-11
相关资源
最近更新 更多