使用JavaScript获取IMDB信息时Director等字段返回undefined如何解决
问题原因
- 你当前使用的是OMDB的搜索接口(请求参数带
s),该接口返回的Search数组条目仅包含基础字段,不包含Director、Runtime、Released等详细信息 - 这类详细字段需要通过搜索结果返回的
imdbID,调用OMDB单条详情接口(请求参数带i)才能获取 - 原代码中多余的
JSON.stringify+JSON.parse操作属于冗余逻辑,jQuery的$.get请求已经自动将返回的JSON格式数据转为JS对象,无需额外转换
修复后完整代码
JS部分
var data; function getanswer(q) { // 调用搜索接口获取匹配结果的imdbID $.get("https://www.omdbapi.com/?s=" + q + "&apikey=ba1f4581", function(searchData) { if (!searchData.Search || searchData.Search.length === 0) { document.getElementById('answer').innerHTML = "<p>未找到对应影视内容</p>"; return; } const firstResult = searchData.Search[0]; const imdbID = firstResult.imdbID; // 调用详情接口获取完整字段 $.get("https://www.omdbapi.com/?i=" + imdbID + "&apikey=ba1f4581", function(detailData) { const title = detailData.Title; const year = detailData.Year; const director = detailData.Director; const runtime = detailData.Runtime; const released = detailData.Released; const imdburl = "https://www.imdb.com/title/" + imdbID + "/"; const posterurl = detailData.Poster; // 拼接输出内容 document.getElementById('answer').innerHTML = ` <h1>${title}</h1> <img src='${posterurl}' alt='${title}海报'> <p>上映年份:${year}</p> <p>上映日期:${released}</p> <p>导演:${director}</p> <p>时长:${runtime}</p> <p>IMDB页面:<a href='${imdburl}' target='_blank'>${imdburl}</a></p> `; }) }) }
HTML部分
<!doctype html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body onload="getanswer(document.getElementById('querybox').value)"> <input value="The Meg" onkeyup="getanswer(document.getElementById('querybox').value)" id="querybox"> <div id="answer"></div> </body> </html>
内容的提问来源于stack exchange,提问作者santosh
相关产品推荐
相关产品推荐

