Показать сообщение отдельно
  #1 (permalink)  
Старый 20.03.2014, 17:24
Кандидат Javascript-наук
Отправить личное сообщение для fAmOus Посмотреть профиль Найти все сообщения от fAmOus
 
Регистрация: 10.07.2012
Сообщений: 105

Парсинг XML файла и создание массива
Всем привет.. я хочу сделать парсер xml файла и занесение тех данных в массив, но у меня получается кривой массив и я не могу вывести данные из него.
Собственно вот функция:
function loadingVariablesForNews(){
    console.log("сейчас активен режим новостей: "+$.cookie("_statViewLayer"));
    var num_pages = $NUM_PAGES$,
	num_entries = $NUM_ENTRIES$,
	current_page = '$CURRENT_PAGE$',
	current_page = current_page.replace(/<[^>]+>/g,'');
    var obj= {MATERIAL_ID:[],TITLE:[],MESSAGE:[],ENTRY_URL:[],CATEGORY_NAME:[],CATEGORY_URL:[],COMMENTS_NUM:[],COMMENTS_URL:[],USER_NAME:[],USER_ID:[],RATING:[],RATED:[],READS_NUM:[],RUNS_NUM:[],DATE:[],TIME:[],TIMESTAMP:[]};
    console.log("Всего страниц: $NUM_PAGES$");
    console.log("Всего материалов: $NUM_ENTRIES$");
    console.log("Текущая страница: "+current_page);
    for (i=1;i<=num_pages;i++){
	console.log(i);
	$.ajax({
	    type: "GET",
	    url: "//cs-portalik.at.ua/api/stuff/0-"+[i],
	    dataType: "xml",
	    success: function(data){
		$.each($(data).find("member"),function(){
		    var n = $(this).find("name").next().text(),
			o = $(this).find("name").text();
		    "MATERIAL_ID" == o && obj.MATERIAL_ID.push(n);
		    "TITLE" == o && obj.TITLE.push(n);
		    "MESSAGE" == o && obj.MESSAGE.push(n);
		    "ENTRY_URL" == o && obj.ENTRY_URL.push(n);
		    "CATEGORY_NAME" == o && obj.CATEGORY_NAME.push(n);
		    "CATEGORY_URL" == o && obj.CATEGORY_URL.push(n);
		    "COMMENTS_NUM" == o && obj.COMMENTS_NUM.push(n);
		    "COMMENTS_URL" == o && obj.COMMENTS_URL.push(n);
		    "USER_NAME" == o && obj.USER_NAME.push(n);
		    "USER_ID" == o && obj.USER_ID.push(n);
		    "RATING" == o && obj.RATING.push(n);
		    "RATED" == o && obj.RATED.push(n);
		    "READS_NUM" == o && obj.READS_NUM.push(n);
		    "RUNS_NUM" == o && obj.RUNS_NUM.push(n);
		    "DATE" == o && obj.DATE.push(n);
		    "TIME" == o && obj.TIME.push(n);
		    "TIMESTAMP" == o && obj.TIMESTAMP.push(n);
		});
		if(i-1==3){
		    console.log("LAST");
		    shablon = "";
		    console.log(obj.MATERIAL_ID);
		    console.log(obj.TITLE);
		    $.each(obj.MATERIAL_ID,function(e){
			if($.cookie("_statViewLayer")=='list'){
			    console.log(obj.TITLE[e]);
			}
			if($.cookie("_statViewLayer")=='block'){
			    shablon += "<div class='block default'><div class='bd'><div class='poster' style='background: url(/diablo3.png) no-repeat;'></div><div class='text'><h2>"+obj.TITLE[e]+"</h2><p>"+obj.MESSAGE[e]+"</p></div></div><ul class='info'><li class='time'><i>15 \u043c\u0438\u043d. \u043d\u0430\u0437\u0430\u0434<div>15 \u043c\u0438\u043d. \u043d\u0430\u0437\u0430\u0434</div></i></li><li class='comm' style='margin-left: 4px;float:right;'><i>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:<div>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:</div></i><i>237<div>237</div></i></li><li class='view' style='margin-left: 8px;float:right;'><i>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432:<div>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432:</div></i><i>190<div>190</div></i></li></ul></div>";
			}
		    });
		}
	    },
	    error: function(XMLHttpRequest, textStatus, errorThrown) {
		alert("Status: " + textStatus); alert("Error: " + errorThrown);
	    }
	});
    }
    $(".wrapContent .content").html(shablon);
}


На 39 строке я пытался определить последний цикл и выполнить действия, но почему-то "i" всегда был равен 3 или 4.. я просто в замешательстве..

Еще на 7 строке пытался сделать массив, но получилось криво.

Помогите исправить код и переработать массив примерно в такой вид:
material[nomer].TITLE - вывод
material[3].MATRIAL_ID - вывод
[1]:{TITLE:'название','MATERIAL_ID':'номер'}
[2]:{TITLE:'название','MATERIAL_ID':'номер'}
[3]:{TITLE:'название','MATERIAL_ID':'номер'}
[4]:{TITLE:'название','MATERIAL_ID':'номер'}

Что-то вроде того.. просто давно не занимался javascript и много чего забыл, а в поиске ничего не смог найти.

И кстати, в цикле вроде все присваивалось, но вывести в нем и после него я не мог.

Жду помощи, подсказок и критики
Ответить с цитированием