Я пытаюсь предварительно загрузить html-контент, используя AJAX и jQuery. Функция обратного вызова AJAX добавляет данные в ассоциативный массив. Я в порядке, если я делаю каждый запрос индивидуально:
var contentArray = new Object();
var urlA = "includes/contentA.php";
var urlB = "includes/contentB.php";
var urlC = "includes/contentC.php";
$.get(urlA, function(htmlA) {
contentArray["A"] = htmlA;
});
$.get(urlB, function(htmlB) {
contentArray["B"] = htmlB;
});
$.get(urlC, function(htmlC) {
contentArray["C"] = htmlC;
});
Поскольку у меня есть несколько таких (более трех), я попытался сделать это для цикла for:
var contentArray = new Object();
var pages = new Object();
pages["A"] = "includes/contentA.php";
pages["B"] = "includes/contentB.php";
pages["C"] = "includes/contentC.php";
for (var key in pages) {
var URL = pages[key];
$.get(URL, function(html) {
contentArray[key] = html;
});
}
Однако это не работает. contentArray
имеет только одно свойство, содержащее html-данные, а не три. Я знаком с jQuery, особенно с AJAX, поэтому объяснения и решения (аналогичные или разные методы-одинаковые-результаты) являются welome.
Кстати, я знаю, что один больший запрос AJAX предпочтительнее, чем несколько маленьких, но я пытаюсь сохранить совместимость для пользователей без JS, и текущие включения в php удобны. Любые предложения о том, как я мог бы удовлетворить оба эти требования, также очень приветствуются.
Спасибо.