Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 为什么可以';我不能从这个结构中获取文章数据吗?_Javascript - Fatal编程技术网

Javascript 为什么可以';我不能从这个结构中获取文章数据吗?

Javascript 为什么可以';我不能从这个结构中获取文章数据吗?,javascript,Javascript,我整天都在为这个问题挠头 我做了一个更改,删除了内联数据,而是添加了一个getJSON函数。然而,在这样做的时候,没有一个数据呈现在模式中,我也不知道问题出在哪里 我期待一个模式,其中显示了一系列的文章标题和链接的模式 gist页面上的数据显示json有效负载中的所有键都有双引号 "articles": [{ "title": "Observation of Gravitational Waves from a Binary Bl

我整天都在为这个问题挠头

我做了一个更改,删除了内联数据,而是添加了一个getJSON函数。然而,在这样做的时候,没有一个数据呈现在模式中,我也不知道问题出在哪里

我期待一个模式,其中显示了一系列的文章标题和链接的模式

gist页面上的数据显示json有效负载中的所有键都有双引号

"articles": [{
        "title": "Observation of Gravitational Waves from a Binary Black Hole Merger",
        "publishDate": "1976-03-04T04:19:34.259Z",
        "url": "https://physics.aps.org/featured-article-pdf/10.1103/PhysRevLett.116.061102"
    },
    {
        "title": "First observation of gravitational waves",
        "publishDate": "1997-11-03T10:03:39.123Z",
        "url": "https://en.wikipedia.org/wiki/First_observation_of_gravitational_waves"
    },
    {
        "title": "Gravitational Waves Detected 100 Years After Einstein's Prediction",
        "publishDate": "1997-11-03T10:03:39.123Z",
        "url": "https://www.ligo.caltech.edu/news/ligo20160211"
    }
]
但是,对检索到的内容使用
console.log
,会发现键没有引号:

articles: [
    {
        publishDate: "1976-03-04T04:19:34.259Z",
        title: "Observation of Gravitational Waves from a Binary Black Hole Merger",
        url: "https://physics.aps.org/featured-article-pdf/10.1103/PhysRevLett.116.061102"
    },
    {
        publishDate: "1997-11-03T10:03:39.123Z",
        title: "First observation of gravitational waves",
        url: "https://en.wikipedia.org/wiki/First_observation_of_gravitational_waves"
    },
    {
        publishDate: "1997-11-03T10:03:39.123Z",
        title: "Gravitational Waves Detected 100 Years After Einstein's Prediction",
        url: "https://www.ligo.caltech.edu/news/ligo20160211"
    }
]
const getJSON=async url=>{
试一试{
const response=等待获取(url);
如果(!response.ok){//检查响应是否工作(无404错误等)
抛出新错误(response.statusText);
}
const data=await response.json();//从响应中获取json
return data;//返回一个承诺,该承诺解析为此数据值
}捕获(错误){
console.log(错误);
//返回误差;
}
}
log(“获取数据…”);
getJSON(“https://gist.githubusercontent.com/TheMightyLlama/9f4f1b4c2c078a6080c9212aba6beb59/raw/News%2520Detail%2520Sample%2520-%2520Ligo.json)
。然后(数据=>{
控制台日志(数据);
函数getArrayByName(名称){
返回数据过滤器(
功能(数据){
退货项目[名称];
}
)[0][姓名];
}
//填充YOUTUBE列表
//转盘指示器
//旋转木马
//转盘式左右控制
//填充文章列表
var article=getArrayByName(“articles”);
var listgroup=document.createElement(“ul”);
setAttribute(“类”、“列表组列表组刷新”);
对于(第条中的var r){
var listitem=document.createElement(“li”);
setAttribute(“类”、“列表组列表组项”);
//var itemicon=document.createElement(“i”);
//setAttribute(“类”、“远法报纸”);
var itemlink=document.createElement(“a”);
setAttribute(“href”,article[r].url);
setAttribute(“目标”,“空白”);
itemlink.innerHTML=文章[r]。标题;
//appendChild(itemicon);
appendChild(itemlink);
listgroup.appendChild(listitem);
var元素=document.getElementById(“argroup”);
元素。appendChild(列表组);
}
});

引导程序4示例
a、 已计划的列表项{
背景:#f0;
}
a、 未排定日程的清单项目{
背景:#FF5555;
}
开放模态
Youtube
&时代;
关

您的
getArrayByName
函数不正确。返回的数据是单个对象,而不是对象数组。该对象只有一个
articles
属性,您应该只返回该属性

function getArrayByName(name) {
  return data[name];
}
似乎根本没有必要为此设置一个功能。只要写

var articles = data.articles;

显然,您的函数试图做的是使用非空的
articles
属性返回
data
数组的所有元素。但是它不起作用,因为
数据
不是数组,所以它没有
过滤器()
方法。然后,您将访问不存在的变量
,而不是回调参数
数据
(使用与正在筛选的数组相同的回调参数名称也会造成混淆)。

添加console.log语句,并将调试语句打印到控制台。看看你的代码是否用正确的变量执行了正确的循环。你在标题中做了一个大胆的断言。大胆的断言需要大胆的证据,而这正是问题所缺乏的。请在问题中包含一个示例,说明您声称JavaScript无法正确解析服务返回的内容。应该发生什么情况?发生了什么事?您在控制台中看到了哪些错误?此外,您提供的代码片段甚至没有运行。您获取的数据是一个JSON对象,但您正在其上应用
data.filter()
,用于过滤数组。。。即使你的
数据
是一个数组,你使用它的方式表明,你并不真正知道如何正确使用is-properl。请注意,函数
getArrayByName
定义了传递给
filter
的函数,并命名了其唯一的参数
data
,但函数体使用了名为
项的未定义变量。我看不出这是怎么回事。您应该会在控制台中看到一个错误…好的,这很有帮助。正如您在上面演示的那样,我仍然无法循环阅读
文章。但这是我很乐意迈出的一步。我还错过了一个名为variable
article
的循环,而不是
articles
。就这样了。非常感谢。