Этот код
let callbackString = {};
$.getJSON("getData.php", callbackString.set1);
$.getJSON("getOtherData.php", callbackString.set2);
callback(null,callbackString);
.set1
и .set2
будет неопределенным, потому что вы только что создали callbackString
как пустой объект!Я думаю, вы неправильно поняли цель второго аргумента для getJSON
... это данные, которые отправлены в запросе
Вы также вызываете функцию обратного вызова с первым аргументом какnull - но вы пытаетесь использовать getData, например
getData(function(data) { ...
, поэтому data
всегда будет null
Кроме того, $ .getJSON асинхронен и ваш код не ожидает завершения запроса - поэтому у вас не будет возможности получить доступ к результатам
Возможно, это поможет
function getData(callback) {
$.when($.getJSON("getData.php"), $.getJSON("getOtherData.php")).then(function(set1, set2) {
callback({set1:set1, set2:set2});
});
}
однако, если вы захотитеправильная обработка ошибок, тогда вы можете сделать что-то вроде
function getData(callback) {
$.when($.getJSON("getData.php"), $.getJSON("getOtherData.php"))
.then(function(set1, set2) {
callback(null, {set1:set1, set2:set2});
})
.catch(function(err) {
callback(err);
});
}
getData(function(err, data) {
if (err) {
//handle error
} else {
let data1 = data.set1;
let data2 = data.set2;
let markerlist = [];
...
...
}
});
Лично, потому что $.getJSON
возвращает обещание (ну, версия обещания jQuery), я бы с большей вероятностью написалкод как:
const getData = () => Promise.all([$.getJSON("getData.php"), $.getJSON("getOtherData.php")]);
getData()
.then(([data1, data2]) => { // note that data1, data2 are now the arguments to the function
let markerlist = [];
for (let i = 0; i< data1.length; i++) {
...
...
}
})
.catch(err => {
// handle errors here
});