2013-11-18 2 views
0

Я довольно новичок в javascript и jquery. В настоящее время у меня есть xml-файл, который я пытаюсь проанализировать с помощью jquery и javascript, но по какой-то причине значения, хранящиеся в массиве, не сохраняются.Значения не сохраняются в массиве

var categories = new Array(); // Array for the categories 

var data = { 
    categories: [] 
}; 

var sources = [ 
{ 
    src:'', 
    title: '', 
    desc: '' 
}]; 

var i = 0; 

$.get('fakeFeed.xml', function (info) { 
    $(info).find("item").each(function() { 
    var el = $(this); 
    var categoryName = el.find('category').text(); 
    var p = categories.indexOf(categoryName); 

    sources[i] = []; 
    sources[i].src = el.find('media\\:content, content').attr('url'); 
    sources[i].title = el.find("title").text(); 
    sources[i].desc = 'Moscone Center'; 

    if(p == -1) { 
     categories.push(categoryName); 
     var category = { 
     name: categoryName, 
     videos: [] 
     }; 
    } 
    i++; 
    }); 
}); 

Если я делать console.log (категории) печатает все категории на массиве, но если я console.log (categories.length) я получаю 0 ...

console.log(categories.length); // This should be outputting 5 but I keep getting 0 for the size. 
for (var i=0; i<categories.length; i++) { 
    var category = { 
    name: categories[i], 
    videos: [] 
    }; 
} 

Я ценю любую помощь, которую может дать любой человек. Спасибо

ответ

2

$.get Функция асинхронная, поэтому вы должны попробовать поставить журнал в функцию обратного вызова.

$.get('fakeFeed.xml', function (info) { 
    $(info).find("item").each(function() { 
    .... 
    }); 
    console.log(categories.length); 
}); 
+0

Спасибо! так что вы говорите, что другие части кода могут закончиться до того, как функция $ .get завершит цикл? – aafonso1991

+0

Да. Поскольку код внутри 'function (info) {...}' вы проходите, то внутри внутри функции этот код выполняется всякий раз, когда '$ .get' считает нужным. Функция обратного вызова может даже не выполняться, если запрос GET в файл XML не удался. –

Смежные вопросы