目前我正在使用以下代码从我的网站上的任何给定页面的标题处的LD + JSON脚本中提取数据,然后我将该数据打印到特定部分。到目前为止一切都很好。
$(document).ready(function () {
var data = $(".metadata").html();
var json = JSON.parse(data);
$('.title').html(json.name);
$('.datePublished').html(json.datePublished);
$('.dateModified').html(json.dateModified);
$('.keywords').html(json.keywords);
$('.author').html(json["author"]["name"]);
$('.editor').html(json["editor"]["name"]);
$('.publisher').html(json["publisher"]["name"]);
});
然后我以这种方式检索它:
<div class="article-meta">
<p>Author: <span class="author"></span>; Editor: <span class="editor"></span>; Publisher: <span class="publisher"></span>.</p>
<p><span class="article-small">Keywords: <span class="keywords"></span></span></p>
</div>
然而,这是我不理解的事情发生的地方。如果我的页面调用所有这些参数,它就可以正常工作。但是,如果有,例如,没有声明的#34;编辑器&#34;,那么它下面的所有参数都不再打印。在上面的示例中,&#34; publisher&#34;停止出现,因为我没有打电话给#34;编辑&#34;。
有人可以帮忙吗?
答案 0 :(得分:1)
如果属性json [&#34; author&#34;]未定义,则Javascript将暂停,并且在尝试阅读&#34; name&#34;时不会继续subproperty(可以在浏览器控制台中查看);
作为一种防止此错误的方法,您可以先检查该值是否存在,如下所示:
if (json["author"] != undefined) { $('.author').html(json["author"]["name"]); }