Estoy tratando de ejecutar mi script que buscará el título de una película en una base de datos de películas. Obtengo resultados en la consola y no hay errores. Pero en mi función renderMovies , se supone que almacena el título de la película API, la trama, etc. en mis variables, pero cuando lo imprimo en una lista, no me da nada (en blanco) o no está undefined . Soy un poco nuevo en jQuery, AJAX y las API, así que estoy siguiendo una guía, por lo que el código no está escrito en su totalidad por mí.
OBS: me queda indefinido cuando uso este $("<td>" + plot + "</td>") , pero en blanco cuando uso $("<td>").append(title) . Puede encontrar ese código en medio de la función renderMovies.
Por ejemplo: busco la película 'Avatar' y obtengo dos resultados. Sin embargo, los dos resultados se "almacenan" como undefined en la descripción de la trama y en blanco en el título.
$(document).ready(function(){ $(init); function init() { $("#searchMovie").click(searchMovie); var movieTitle = $("#movieTitle"); var table = $("#results"); var tbody = $("#results tbody"); function searchMovie(){ var title = movieTitle.val(); $.ajax({ url: "http://www.myapifilms.com/imdb/idIMDB?title=" + title + "&token=b81c6057-20cf-4849-abc4-decbf9b65286&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&keyword=0"es=0&fullSize=0&companyCredits=0&filmingLocations=0", dataType: "jsonp", success: renderMovies }); }; function renderMovies(movies) { console.log(movies); tbody.empty(); for(var m in movies) { var movie = movies[m]; var title = movie.title; var plot = movie.simplePlot; var posterUrl = movie.urlPoster; var imdbUrl = movie.urlIMDB; var tr = $("<tr>"); var titleTd = $("<td>").append(title); // blank var plotTd = $("<td>" + plot + "</td>"); // undefined on my website tr.append(titleTd); tr.append(plotTd); tbody.append(tr); } } } });Reordené sus funciones y llamadas porque algunas de las variables no estaban definidas. (Google Chrome -> F12 (abre la consola de desarrolladores))
Esto devuelve una respuesta al hacer clic en un botón.
$(document).ready(function () { function searchMovie() { var movieTitle = $("#movieTitle"); var title = movieTitle.val(); $.ajax({ url: "http://www.myapifilms.com/imdb/idIMDB?title=" + title + "&token=b81c6057-20cf-4849-abc4-decbf9b65286&format=json&language=en-us&aka=0&business=0&seasons=0&seasonYear=0&technical=0&filter=2&exactFilter=0&limit=1&forceYear=0&trailers=0&movieTrivia=0&awards=0&moviePhotos=0&movieVideos=0&actors=0&biography=0&uniqueName=0&filmography=0&bornAndDead=0&starSign=0&actorActress=0&actorTrivia=0&similarMovies=0&adultSearch=0&goofs=0&keyword=0"es=0&fullSize=0&companyCredits=0&filmingLocations=0", dataType: "jsonp", success: renderMovies }); } function renderMovies(movies) { console.log(movies); var movieInfo = movies.data.movies; var table = $("#results"); var tbody = $("#results tbody"); tbody.empty(); for (var m in movieInfo) // Tar information från apin och stoppar in i egna variabler. { var movie = movieInfo[m]; var title = movie.title; var plot = movie.simplePlot; var posterUrl = movie.urlPoster; var imdbUrl = movie.urlIMDB; var tr = $("<tr>"); var titleTd = $("<td>").append(title); // blank var plotTd = $("<td>" + plot + "</td>"); // undefined on my website tr.append(titleTd); tr.append(plotTd); tbody.append(tr); } } $("#searchMovie").click(searchMovie); });