Javascript .getJSON 多个 URL

Javascript .getJSON multiple URLs

我在 Javascript 中有 WEbDataconnector,它从 .json 文件下载数据并加载 table:

myConnector.getData = function(table, doneCallback) {

        $.getJSON("http://url/api/opls/number/tasks?apiKey", function(resp) {        
            var feat = resp.data,
                tableData = [];

            // Iterate over the JSON object
            var keys = Object.keys(feat);
            for (var i = 0, len = keys.length; i < len; i++) {
                tableData.push({
                    "taskId": feat[keys[i]].taskId,
                    "owner": feat[keys[i]].owner,
                    "description": feat[keys[i]].description,
                    "responsible": feat[keys[i]].responsible,                     

                });
            }

            table.appendRows(tableData);
            doneCallback();
        });

我的问题是我有多个 URL,具有不同的编号和 apikey。我需要将所有 URL 的数据合并为一个 table。 谁能帮帮我?谢谢。

编辑:

如果我向 data.push() 方法添加更多元素,它以以下结尾:"null is not an object" 因为 JSON 中的某些对象为空,

JSON的例子:

"1026533": {
        "taskId": 1026533,
        "opl": 6919,
        "owner": "name",
        "description": "text",
        "responsible": "name",  
        "taskStart": {
            "date": "2016-03-21 13:28:11.000000",
            "timezone_type": 3,
            "timezone": "Europe\/Prague"

但有时有一个元素 taskStart 为 null:

"1026535": {
        "taskId": 1026535,
        "opl": 6919,
        "owner": "name",
        "description": "text",
        "responsible": "name",
        "taskStart": null,

我如何检查这个并推送所有数据或为空?谢谢

Keep an array containing all the urls that you need to fetchs.

urls = [
    'http://url/api/opls/number1/tasks?apiKey1',
    'http://url/api/opls/number2/tasks?apiKey2', 
    'http://url/api/opls/number3/tasks?apiKey3'
];

Then iterate over the array and send an ajax request on each url.

urls.forEach(function(url) {
  $.getJSON(url, function(resp) {        
    var feat = resp.data,
    let data = [];

    // Iterate over the JSON object
    var keys = Object.keys(feat);
    for (var i = 0, len = keys.length; i < len; i++) {
        data.push({
            "taskId": feat[keys[i]].taskId,
            "owner": feat[keys[i]].owner,
            "description": feat[keys[i]].description,
            "responsible": feat[keys[i]].responsible,                     
        });
    }

    table.appendRows(data);
    doneCallback();
  });
});

recursion and named function expression 与 URL 的列表一起使用。

myConnector.getData = function (table, doneCallback) {
    var urls = [ /* the urls */]
    if (urls.length == 0) return doneCallback();
    $.getJSON(urls.shift(), function callback(resp) {
        var feat = resp.data,
            tableData = [];
        // Iterate over the JSON object
        var keys = Object.keys(feat);
        for (var i = 0, len = keys.length; i < len; i++) {
            tableData.push({
                "taskId": feat[keys[i]].taskId,
                "owner": feat[keys[i]].owner,
                "description": feat[keys[i]].description,
                "responsible": feat[keys[i]].responsible,

            });
        }
        table.appendRows(tableData);
        var url = urls.shift();
        if (url) return $.getJSON(url, callback); // recursion happens here 
        doneCallback();
    });
}