Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';url';未定义的_Javascript_Json - Fatal编程技术网

Javascript 无法读取属性';url';未定义的

Javascript 无法读取属性';url';未定义的,javascript,json,Javascript,Json,在一个简短的教程中,我开始编写这个小部件脚本,以获取博客上的帖子。在我最初制作的主题中,它运行良好,没有错误。但是,当我尝试在正在处理的新模板中使用完全相同的代码时,它会抛出错误: 未捕获的TypeError:无法读取未定义的属性“url” 看在上帝的份上,我搞不懂它为什么这么做。出于调试的目的,我尝试删除所有其他脚本,将代码放在标记的正后方和标记的正前方 我真的对脚本一无所知,并把这个小部件作为学习的起点,但我已经几个月没把它弄糟了。现在我看不出有什么问题。以下是脚本: <script

在一个简短的教程中,我开始编写这个小部件脚本,以获取博客上的帖子。在我最初制作的主题中,它运行良好,没有错误。但是,当我尝试在正在处理的新模板中使用完全相同的代码时,它会抛出错误:

未捕获的TypeError:无法读取未定义的属性“url”

看在上帝的份上,我搞不懂它为什么这么做。出于调试的目的,我尝试删除所有其他脚本,将代码放在
标记的正后方和
标记的正前方

我真的对脚本一无所知,并把这个小部件作为学习的起点,但我已经几个月没把它弄糟了。现在我看不出有什么问题。以下是脚本:

<script type="text/javascript">
    //<![CDATA[
    function postGrabber(json) {

        // The Magic
        for (var i = 0; i < json.feed.entry.length; i++) {
            for (var j = 0; j < json.feed.entry[i].link.length; j++) {
                if (json.feed.entry[i].link[j].rel == 'alternate') {
                    var postUrl = json.feed.entry[i].link[j].href;
                    break;
                }
            }

            // Thumbnail Stuff
            var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';
            var newImgUrl = orgImgUrl.replace('s72-c', 's' + imgSize + '-c');
            var imgTag = '<a class="item-link-post" href="' + postUrl + '"><img class="item-img-thumbnail" src="' + newImgUrl + '" width="' + imgSize + '" height="' + imgSize + '"/></a>';

            var authorName = json.feed.entry[i].author[0].name.$t;
            var authorURL = json.feed.entry[i].author[0].uri.$t;
            var authorOriImgUrl = json.feed.entry[i].author[0].gd$image.src;
            var authorNewImgUrl = authorOriImgUrl.replace('s512-c', 's' + authorImgSize + '-c');
            var authorImgTag = '<a class="item-link-author" href="' + authorURL + '" target="_blank" rel="nofollow"><img class="item-img-author" src="' + authorNewImgUrl + '" alt="' + authorName + '"/></a>';

            // Standard Stuff
            var postTitle = json.feed.entry[i].title.$t;
            var postCommentCount = json.feed.entry[i].thr$total.$t;

            var postSummary = json.feed.entry[i].summary.$t;
            var entryShort = postSummary.substring(0, '' + summaryLength + '');
            var entryEnd = entryShort.lastIndexOf(" ");
            var postContent = entryShort.substring(0, entryEnd) + '...';

            var postDate = json.feed.entry[i].updated.$t ? json.feed.entry[i].updated.$t : json.feed.entry[i].published.$t;
            var shortDate = postDate.substring(0,10);

            // Let's Make Options Here
            var toggleImg = showImg ? '' + imgTag + '' : '';
            var toggleTitle = showTitle ? '<h1 class="item-title">' + postTitle + '</h1>' : '';
            var toggleSummary = showSummary ? '<p class="item-snippet">' + postContent + '</p>' : '';
            var toggleDate = showDate ? '<span class="item-date">' + shortDate + '</span>' : '';
            var toggleAuthorImg = showAuthorImg ? '' + authorImgTag + '' : '';
            var toggleCommentCount = showCommentCount ? '<span class="item-comment-count">' + postCommentCount + '</span>' : '';

            // The Output
            var itemPost = '<div class="item-post"><div class="item-imgs">' + toggleImg + toggleAuthorImg + '</div>' + toggleCommentCount + '<a class="item-link" href=' + postUrl + '>' + toggleTitle + '</a>' + toggleSummary + toggleDate + '</div>';

            // Let's Write It Down
            document.write(itemPost);
        }
    }
    //]]>
</script>
<script type="text/javascript">
    // The Default Options
    var imgSize = 96;
    var summaryLength = 142;
    var authorImgSize = 36;
    var showImg = true; 
    var showTitle = true; 
    var showSummary = true; 
    var showDate = true;
    var showAuthorImg = true;
    var showCommentCount = true;
</script>
<script src="/feeds/posts/summary?orderby=published&amp;max-results=5&amp;alt=json-in-script&amp;callback=postGrabber"></script>

//“+postTitle+”:”;
var toggleSummary=showSummary?“

'+postContent+”

':''; 变量toggleDate=showDate?“”+短日期+'':''; var toggleAuthorImg=showAuthorImg?“”+authorImgTag+“”:“”; var toggleCommentCount=showCommentCount?“”+postCommentCount+“”:“”; //输出 var itemPost=''+toggleImg+toggleAuthorImg+''+toggleCommentCount+''+toggleSummary+toggleDate+''; //让我们把它写下来 文件。编写(itemPost); } } //]]> //默认选项 var-imgSize=96; var summaryLength=142; var-mgsize=36; var showImg=真; var showthile=true; var showSummary=true; var showDate=true; var=mg=true; var showcomentcount=true;
在所有这些代码行中,我能看到的对
url
属性的唯一引用是这里

var orgImgUrl = json.feed.entry[i].media$thumbnail.url ? json.feed.entry[i].media$thumbnail.url : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';
所以,我猜错误是说
json.feed.entry[I]
没有名为
media$thumbnail
的属性……它是“未定义的”。您需要更正该错误,无论是键入错误还是其他错误,请确保该属性存在

如果属性是“可选”的,则更改您的评估以检查该属性是否存在,如下所示

var orgImgUrl = (json.feed.entry[i].media$thumbnail != null 
                   && json.feed.entry[i].media$thumbnail.url)
              ? json.feed.entry[i].media$thumbnail.url 
              : 'http://1.bp.blogspot.com/-mxinHrJWpBo/VD6fqbvI74I/AAAAAAAAcn8/LslulDeOROg/s72-c/noimage-chalkboard.jpg';

错误消息说url的父项未定义,但问题标题说url未定义?我更改了标题。谢谢,这似乎解决了问题。我猜我一开始写的剧本写得不好。我只是假设该属性是自动检查的。