Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 在JS中循环JSON_Javascript_Json_Loops - Fatal编程技术网

Javascript 在JS中循环JSON

Javascript 在JS中循环JSON,javascript,json,loops,Javascript,Json,Loops,我有一个json文件,需要访问/循环一些属性 使用下面的代码,我在控制台中只接收“Object{dish:Array[1],price:Array[1],restaurant:Array[1]}”,而不是组数组中的所有162个元素 具体说明我需要什么:我想打印出组数组中的每个菜、价格、餐厅属性 我的JS看起来像这样: $(document).ready(function update() { var xhr = new XMLHttpRequest(); xhr.onreadys

我有一个json文件,需要访问/循环一些属性

使用下面的代码,我在控制台中只接收“Object{dish:Array[1],price:Array[1],restaurant:Array[1]}”,而不是组数组中的所有162个元素

具体说明我需要什么:我想打印出组数组中的每个菜、价格、餐厅属性

我的JS看起来像这样:

$(document).ready(function update() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
       if(xhr.readyState === 4) {
        var jsonData = JSON.parse(xhr.responseText);

        for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
          var statusHTML = jsonData.result.extractorData.data[0].group[i];
        }
        console.log(statusHTML);
         statusHTML += '</ul>';
         document.getElementById('ajax').innerHTML = statusHTML;
       }
    };

    xhr.open('GET', 'data/restaurantquery.json');

    xhr.send();
    setTimeout(update, 5000);
});
var statusHTML = "";
for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
   statusHTML += jsonData.result.extractorData.data[0].group[i];
}
console.log(statusHTML);
statusHTML += '</ul>';
document.getElementById('ajax').innerHTML = statusHTML;
var statusHTML = "";
for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
   statusHTML += "<li>";
   statusHTML += jsonData.result.extractorData.data[0].group[i];
   statusHTML += "</li>";
}
console.log(statusHTML);
statusHTML += '</ul>';
document.getElementById('ajax').innerHTML = statusHTML;

您总是将
statusHTML
分配给循环的当前迭代,而从不连接结果。将其更改为以下内容:

$(document).ready(function update() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
       if(xhr.readyState === 4) {
        var jsonData = JSON.parse(xhr.responseText);

        for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
          var statusHTML = jsonData.result.extractorData.data[0].group[i];
        }
        console.log(statusHTML);
         statusHTML += '</ul>';
         document.getElementById('ajax').innerHTML = statusHTML;
       }
    };

    xhr.open('GET', 'data/restaurantquery.json');

    xhr.send();
    setTimeout(update, 5000);
});
var statusHTML = "";
for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
   statusHTML += jsonData.result.extractorData.data[0].group[i];
}
console.log(statusHTML);
statusHTML += '</ul>';
document.getElementById('ajax').innerHTML = statusHTML;
var statusHTML = "";
for(var i=0; i< jsonData.result.extractorData.data[0].group.length; i+=1) {
   statusHTML += "<li>";
   statusHTML += jsonData.result.extractorData.data[0].group[i];
   statusHTML += "</li>";
}
console.log(statusHTML);
statusHTML += '</ul>';
document.getElementById('ajax').innerHTML = statusHTML;

在调试器中浏览您的代码,特别注意
statusHTML
在每一点上的值。这个长JSON不是重现问题的最短方法,因此这个问题缺少。太好了!谢谢你的提示。