2017-12-31 184 views
1

Dieser Jquery-Code zeigt JSON-Daten innerhalb der Span html Eingabeelemente. Aber ich implementierte keine for-Schleife, um Array-Objekte von Filmgenres anzuzeigen.einfache Schleife durch JSON Api-Array JQuery

Im Moment ist es nur 0 Index des Arrays, aber ich will alles zeigen ..

$("#txt-movie-genres").val(json.genres[0].name) 

$(document).ready(function() { 
 
    var url = 'http://api.themoviedb.org/3/', 
 
    mode = 'movie/', 
 
    movie_id, 
 
    key = '?api_key=e9dfeccf734a61b9a52d9d7660f0d0a1'; 
 

 
    $('button').click(function() { 
 
    var input = $('#movie').val(), 
 
     movie_id = encodeURI(input); 
 
    $.ajax({ 
 
     type: 'GET', 
 
     url: url + mode + movie_id + key, 
 
     async: false, 
 
     jsonpCallback: 'testing', 
 
     contentType: 'application/json', 
 
     dataType: 'jsonp', 
 

 
     success: function(json) { 
 

 
     // grab the span elements by ID and replace their text with the json text 
 

 
     // $("#movie-title").text(json.title); 
 
     $("#txt-movie-title").val(json.title) 
 

 
     $("#txt-movie-genres").val(json.genres[0].name) 
 
     console.dir(json); 
 
     }, 
 

 
     error: function(e) { 
 
     console.log(e.message); 
 
     } 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="movie" type="text" /><button>Search</button> 
 

 
<h1>Movie info:</h1> 
 
<p>Movie title: <span id="span-movie-title"></span> </p> 
 

 
<div class="input-group"> 
 
    <input id="txt-movie-title" name="title" type="text" /> 
 
    <div class="input-group-addon"> 
 
    Movie Name 
 
    </div> 
 
</div> 
 

 
<div class="input-group"> 
 
    <input id="txt-movie-genres" name="genres" type="text" /> 
 
    <div class="input-group-addon"> 
 
    Movie Genre 
 
    </div> 
 
</div>

+0

Haben Sie einen neuen Eingang für jedes Element des Arrays oder Anzeige Komma erstellen möchten getrennte Namen in einer einzigen Eingabe? – Alexander

+0

ja! also das kann "Action, Adventure, Horror" usw. sein ... –

Antwort

3

Etwas wie:

$("#txt-movie-genres").val(json.genres.map(g => g.name).join(","); 

, die eine Anordnung schaffen von Namen und dann verbinden Sie sie in eine durch Kommas getrennte Zeichenfolge.

+1

genau was ich schreiben wollte, +1 für diese Antwort –

+1

Das erfordert ES6 richtig? –

+0

Es tut es. Karte und diese coole Syntax sind beide ES6. var arr = []; für (Schlüssel in json.genres) { arr.push (json.genres [Schlüssel] .name); } $ ("# txt-movie-genres"). Val (arr.join (",")); –

0

Sie könnten json.genres Arrays Array von Genres Namen verdeckte mit .map() methidand dann kommen sie durch Komma getrennte Zeichenfolge mit join():

var names = $.map(json.genres, function() { return this.name }).join(",");