【问题标题】:API Thumbnail Image returns TypeError: cannot read "url" of undefinedAPI缩略图图像返回TypeError:无法读取未定义的“url”
【发布时间】:2016-01-21 06:28:00
【问题描述】:

我正在使用 NYT API 来获取文章的缩略图/图像。但是对于某些图像,我收到了Cannot read property "url" of undefined 错误。这是终端的屏幕截图。

由于它说“url”未定义,我决定(在我的函数中)检查图像源是否返回undefined

var prefix = "http:\/\/static01.nyt.com\/";
var src = prefix + data.multimedia[2].url;
if(!src || src == undefined) { src = "img/img-nyt.png"; }
else { imgSource = src; }
console.log(imgSource);

但我不确定为什么它仍然会返回 undefined,因为如果是,则图像源应更改为 img-nyt.png

这是JSON 请求的示例:

"results": [
    {
        "multimedia":[
            {
                "url":"http:\/\/static01.nyt.com\/images\/2016\/01\/20\/us\/20michigan-web\/20michigan-web-thumbStandard.jpg",
                "height":75,
                "width":75,
            },
            {
                "url":"http:\/\/static01.nyt.com\/images\/2016\/01\/20\/us\/20michigan-web\/20michigan-web-thumbLarge.jpg",
                "height":150,
                "width":150,
            },
            {
                "url":"http:\/\/static01.nyt.com\/images\/2016\/01\/20\/us\/20michigan-web\/20michigan-web-articleInline.jpg",
                "height":127,
                "width":190,
            }
        ]
    }
]

这是我的整个函数,它从这个 JSON 获取值:

// MAKES THE REQUEST AND DISPLAYS THE NEWS BASED ON RESULTS
    function searchArticles(term) {
        viewing.innerHTML = term;
        term = term.replace(/ /g, "+");
        searchURL = "http://api.nytimes.com/svc/search/v2/articlesearch.json?q=" + term + "&api-key=" + searchAPI;
        var prefix = "http:\/\/static01.nyt.com\/";
        mainDivToAppendTo.innerHTML = null;
        $.getJSON(searchURL, function(api) {
            var i = 0;
            api.response.docs.forEach(function(data) {
                link = data.web_url;
                var src = prefix + data.multimedia[2].url;
                if(!src || src == undefined) { src = "img/img-nyt.png"; }
                else imgSource = src;
                console.log(imgSource);
                cardTitle = (data.headline.main.length > 43) ? data.headline.main.substring(0, 43) + " .." : data.headline.main;
                postedBy = "In " + data["section_name"];
                i++;
                createCardElements();
            });
            numberOfPosts.innerHTML = i + " results";
        });
    }

我似乎无法弄清楚这有什么问题。也许我只是错过了一些非常明显的东西。希望我能得到一些帮助..

这是您可以查看的完整示例 URL:

http://api.nytimes.com/svc/search/v2/articlesearch.json?q=donald-trump&api-key=sample-key

【问题讨论】:

    标签: javascript jquery json api


    【解决方案1】:

    而不是检查data.multimedia[0].url == undefined 我需要检查data.multimedia[0] == undefined

    我仍然收到错误,因为它试图从未定义的对象中获取 url,而这确实很神奇。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2014-10-20
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2021-02-19
      • 2022-01-12
      相关资源
      最近更新 更多