Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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无法正确解析JSON中的对象_Javascript_Json_Smartface.io - Fatal编程技术网

Javascript无法正确解析JSON中的对象

Javascript无法正确解析JSON中的对象,javascript,json,smartface.io,Javascript,Json,Smartface.io,我试图获得一个重复框,用JSON文档中的对象填充它。但是,它不会添加每个项目,而是添加JSON文档中第一个项目的多个副本。有什么线索说明原因吗 我使用以下代码从JSON文档中提取对象 function Project_WebClient1_OnSyndicationSuccess(e){ var FactsArray = []; var parsedResponse = JSON.parse(this.responseText); var numOfFacts = p

我试图获得一个重复框,用JSON文档中的对象填充它。但是,它不会添加每个项目,而是添加JSON文档中第一个项目的多个副本。有什么线索说明原因吗

我使用以下代码从JSON文档中提取对象

function Project_WebClient1_OnSyndicationSuccess(e){
      var FactsArray = [];
    var parsedResponse = JSON.parse(this.responseText);
    var numOfFacts = parsedResponse.results.length;
    for (var i = 0; i < numOfFacts; i++) {
        var FactsObject = {};
        FactsObject.heading = parsedResponse.results[i].heading;
        FactsObject.ReleaseDate = parsedResponse.results[i].ReleaseDate;   
        FactsObject.url = parsedResponse.results[i].url;      
        FactsArray.push(FactsObject);
        log(FactsObject.heading);
    }
            Pages.pgFundInfo.RepeatBox1.dataSource = FactsArray;
            Pages.pgFundInfo.RepeatBox1.refresh();
Data.notify("Data.FactSheets_OutDSetFactSheets.FactSheetsId");
}
我得到了正确数量的结果,但是,在我的repeatbox中,它列出了这些结果,但所有结果都使用了第一个条目的数据,而不是其他条目的数据


为此,我在for循环中做错了什么?

根据您的JSON文档,这是循环的一部分

FactsObject.heading = parsedResponse.results[i].heading;
FactsObject.ReleaseDate = parsedResponse.results[i].ReleaseDate;   
FactsObject.url = parsedResponse.results[i].url;  
应改写为

FactsObject.heading = parsedResponse.results[i].Heading; // notice the capital H
FactsObject.ReleaseDate = parsedResponse.results[i].ReleaseDate; // maybe use the .iso attribute, if you don't want to assign the whole object  
FactsObject.url = parsedResponse.results[i].FactFile.url;  // notice the FactFile     
否则它将得到
未定义的结果

但我不确定是什么导致了只获取第一个项目,而不是每个项目的问题

编辑:

如果我只是跑

for (var i = 0, len = parsedResponse.results.length; i < len; i++) {
    console.log(parsedResponse.results[i]);
}
for(var i=0,len=parsedResponse.results.length;i
每个独立的项目我都会得到,而不是第一个多次


参见

@Decay42的建议修正是好的

我不知道你的RepeatBox配置是什么样子的。您可能需要定义一个
onRowRender
函数

见:


另外,我很好奇循环中的
log
函数做了什么,因为我认为没有全局JS
log
函数。

我觉得代码很好。我只是想知道
Pages.pgFundInfo.RepeatBox1.refresh()有什么作用。它只是在异步任务完成后刷新repeatbox。因此,在for循环结束之前,它是空白的,但一旦结束,它就会刷新以显示数据。它是否以某种方式更改了数据源?结果是什么:
console.log(parsedResponse)@JESLAB结果是什么:console.log(parsedResponse);您确定要从
this.responseText
结果上创建一个数组,其中包含不同的项,而不是重复在整个数组中的相同项???这是一个Smartface日志。它显示了Smartface界面中正在拉取的对象。@JESLAB结果是什么:console.log(parsedResponse);你确定从
this.responseText
results
上有一个数组,数组中重复了不同的项,而不是相同的项???好的,从控制台日志中可以看到,它正在查找一个名为results的对象。我猜是对该对象中的对象进行计数,以给出我的计数6,但使用第一个来呈现标题值?您能否告诉我们随附的内容:
console.log(parsedResponse.results[I].heading)就在
var FactsObject={}之前的循环中确定,日志现在显示正确的值。我想问题在于把我的标签正确地挂在重复框里。好的,这肯定就快到了。我尝试了这一点,并在日志上获取所有对象,但是,我的标签文本始终默认为第一个值。所以我猜这与我的标签的连接有关
for (var i = 0, len = parsedResponse.results.length; i < len; i++) {
    console.log(parsedResponse.results[i]);
}