使用XMLHttpRequest

时间:2018-10-31 19:40:21

标签: javascript

我正在尝试使用for循环从我的API获取JSON数据。我遇到的问题(我认为)是for循环在移到下一个事务之前没有等待第一个数据事务,因为从服务器检索数据需要时间。但是,我认为on.load函数是这样工作的?

如果我将每个“ machineID”分别作为“ 41”或“ 43”运行,则可以正常工作。这是当我尝试遍历出现错误的列表时。任何帮助表示赞赏!

var activeMachines = ["41", "43", "45"]
var dict = {};
getData();
console.log(dict);

function getData(){
    for(i = 0; i < activeMachines.length; i++){
        var machineID = activeMachines[i]
        var getAPIData = new XMLHttpRequest();
        var url = 'http://127.0.0.1:8000/processes/apidata/' +machineID + '/';
        getAPIData.open('GET', url);
        getAPIData.send();
        getAPIData.onload = function(){
            var APIData = JSON.parse(getAPIData.responseText);
            dict['temp' + machineID] = APIData[0].tempData;
            dict['humid' + machineID] = APIData[0].humidData;
            timeValue = String((APIData[0].dateTime));
            dict['time' + machineID] = new Date(timeValue);
        }
     }
}

这将返回:

    Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.getAPIData.onload (dashboardScript.js:26)

console.log(dict)仅返回activeMachines[2]的字典值,这很奇怪吗?

0 个答案:

没有答案