Я пытаюсь предварительно загрузить некоторый 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, поэтому приветствуются как объяснения, так и решения (аналогичный или другой метод с одинаковым результатом).
Кстати, я знаю, что один большой AJAX-запрос предпочтительнее нескольких маленьких, но я пытаюсь сохранить совместимость для пользователей без включенного JS, и текущие включения php удобны. Любые предложения о том, как я могу удовлетворить оба этих требования, также очень приветствуются.
Спасибо.