2017-05-01 8 views
1

私はAPIを使うことを学んでいます。私はムービータイトルのOMDb APIを検索し、ムービーイメージ/ポスターを自分のサイトに表示しようとしています。私はこのコードを動作させることができず、私が間違っている場所を知っていることに感謝します。前もって感謝します。私が気づいJQuery/JSONが動作しない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> 
+0

あなたは問題の詳細特異的であり得ます。ブラウザのコンソールにエラーがありますか? –

+0

こんにちは、コンソールにエラーが表示されていません。情報を要求する際に何か不足していると思っています。私はネットワーク設定を開いたので、送信をクリックすると情報が表示されません。私は//フォームの値を取得するかどうか疑問に思っています var movieURL = "http://www.omdbapi.com/?"; var movieName = $( '#search')。val(); var movieOptions = { s: ""、 };正しいか、検索リクエストを保存するために別の変数が必要な場合はどうすればいいですか? –

+0

スニペットやフィドルを提供できますか? –

答えて

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>

+0

幸運にも、問題が発生した場合はお手伝いします。 –

+0

ありがとうTony M.それは私がうまくいかないことです!これを見れば、正しいエンドポイントがどこにあるのかを教えてください。var movieURL = "https://www.omdbapi.com/?t=";だから私は将来的にもっと効果的に見える方法を知っていますか? –

+0

Np!通常、検索クエリを送信する必要があるAPIでは、url(クエリパラメータ)を使用してこれらの検索クエリを受け入れます。ドキュメントhttps://www.omdbapi.com/には、利用可能なすべての種類の検索パラメータを示す「パラメータ」セクションがあります。タイトルはその1つです。また、適切に構成されたURLも示しています。経験則として、エンドポイントに情報(映画のタイトルなど)を送信していて、その情報が送信されている場所を指摘できない場合は、何か問題があります。 –

関連する問題