javascript - 使用 TMDb API 的 JSON 输入意外结束

标签 javascript json

我正在尝试解析从电影数据库返回的 JSON 数据。我收到一条错误消息,告诉我出现以下错误:

Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.movieReq.onreadystatechange (discover.js:34)
    at loadIMDBDetails (discover.js:38)
    at MainFunc (discover.js:68)
    at discover.js:5
I am accessing individual movie information using the following XMLHttpRequest:

movieReq.open('GET', ' https://api.themoviedb.org/3/movie/299537?api_key= ', false);

我还有其他 XMLHttpRequest,它们可以很好地返回 JSON 数据。这些请求正在使用 API 的发现功能。

这是产生问题的函数

function loadIMDBDetails(mO, i) {
    movieReq = new XMLHttpRequest();

    movieReq.onreadystatechange = function () {
        var parsedObj = JSON.parse(movieReq.responseText);
        mO.imdbId = parsedObj['imdb_id'];
    };
    movieReq.open('GET', 'https://api.themoviedb.org/3/movie/299537?api_key=34f8307d9addabf7924eab7f22cabb23', false);
    movieReq.send();
}

When using console.log to return the responseText, this is the result:

{"成人":false,"backdrop_path":"/w2PMyoyLU22YvrGK3smVM9fW1jj.jpg","belongs_to_collection":null,"预算":152000000,"流派":[{"id":28,"名称":" Action "},{"id":12,"name":"冒险"},{"id":878,"name":"科幻"}],"主页":"https://www.marvel.com/movies/captain-marvel ","id ":299537,"imdb_id":"tt4154664","original_language":"en","original_title":"惊奇队长","overview":"故事讲述卡罗尔·丹弗斯成为宇宙最强大的英雄之一的故事地球陷入了两个外星种族之间的银河 war 之中。《惊奇队长》以 1990 年代为背景,是漫威电影宇宙历史上前所未见的时期的全新冒险。","受欢迎度":419.096, "poster_path":"/AtsgWhDnHTq68L0lLsUrCnM7TjG.jpg","生产公司":[{"id":420,"logo_path":"/hUzeosd33nzE5MCNsZxCGEKTXaQ.png","name":"漫威工作室","origin_country":"美国"}],"product_countries":[{"iso_3166_1":"美国","name":"美利坚合众国"}],"release_date":"2019-03-06","收入":910298835,"运行时":124,"spoken_languages":[{"iso_639_1":"en","name":"英语"}],"status":"已发布","tagline":"更高。更远。更快。","title":"惊奇队长","video":false,"vote_average":7.3,"vote_count":2885}

最佳答案

事实证明我忘记添加对 onreadystatechange 事件的检查。我添加了以下检查并在 if 语句中运行 json 解析,这解决了我的问题!

movieReq.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        var parsedObj = JSON.parse(movieReq.responseText);
        mO.imdbId = parsedObj['imdb_id'];
    }
};

关于javascript - 使用 TMDb API 的 JSON 输入意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387493/

相关文章:

ios - 解析嵌套的 JSON 条目

javascript - Brain.js 根据高度/体重猜测成人还是 child

javascript - 链接异步函数?

javascript - 获取反向地理编码的返回值

javascript - 结构化 javascript 变量声明中的自引用

javascript - React js将分组列数组转换为普通数组

php - 如何为 json 格式化 Mysql/php 数组?

javascript - 无法完成从nodeJS将视频上传到cloudinary

javascript - 表单元素中的submit()

java - Json Parse 无法正常工作,但适用于 jsontest