Скрипт с парсингом xml
Всем привет. У меня проблема со скриптом,который выводит темы форума пользователя сайта ucoz. Вот код.
<div id="test"></div> <script type="text/javascript"> $.get( 'http://zveriki.ucoz.com/api/forum/0-1-1-3-2', function(data){ var mydata = new Array(); var i = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_LINK'){ if(mydata[$(this).text()] == undefined) mydata[$(this).text()] = new Array(); mydata[$(this).text()][i] = $(this).next().text(); i++; } }); var mydata2 = new Array(); var i2 = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_NAME'){ if(mydata2[$(this).text()] == undefined) mydata2[$(this).text()] = new Array(); mydata2[$(this).text()][i2] = $(this).next().text(); i2++; } }); for(var i3=0;i3<mydata.length;i3++){ $('#test').html('<a href="'+mydata['TOPIC_LINK'][i3]+'">'+mydata2['TOPIC_NAME'][i3]+'</a> '); } }, 'xml' ); </script> Внимание прошу обратить на последний цикл,т.к. без него,к примеру,вот так,все работает нормально: <div id="test"></div> <script type="text/javascript"> $.get( 'http://zveriki.ucoz.com/api/forum/0-1-1-3-2', function(data){ var mydata = new Array(); var i = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_LINK'){ if(mydata[$(this).text()] == undefined) mydata[$(this).text()] = new Array(); mydata[$(this).text()][i] = $(this).next().text(); i++; } }); var mydata2 = new Array(); var i2 = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_NAME'){ if(mydata2[$(this).text()] == undefined) mydata2[$(this).text()] = new Array(); mydata2[$(this).text()][i2] = $(this).next().text(); i2++; } }); $('#test').html('<a href="'+mydata['TOPIC_LINK'][1]+'">'+mydata2['TOPIC_NAME'][1]+'</a> '); }, 'xml' ); </script> |
и что не работает?
какая структура xml-файла? |
vadim5june,xml тут ни при чем. Чисто со скриптом проблема,без цикла робит,с циклом - нет,возможно,с синтаксисом что-то не то.
|
Цитата:
Надо что то типа var t=''; for(var i3=0;i3<mydata.length;i3++){ t+='<a href="'+mydata['TOPIC_LINK'][i3]+'">'+mydata2['TOPIC_NAME'][i3]+'</a> ';}; $('#test').html(t); |
vadim5june,не,скрипт вообще ничего не выводит,с вашим кодом тоже. Но я тут поэкспериментировала: если написать вместо i3<mydata.length i3<=mydata.length,один элемент все же выводится,но там должен быть далеко не один.
|
Цитата:
надо $('#test').append('.... тогда добавлять будет ну или как у меня-я там исправил попробуйте еще |
С append та же фигня. В коде все верно?
var t=''; for(var i3=0;i3<=mydata.length;i3++){ t+='<a href="'+mydata['TOPIC_LINK'][i3]+'">'+mydata2['TOPIC_NAME'][i3]+'</a> ';}; $('#test').append(t); |
все верно только равно не надо таки i3<mydata.length
поставьте alert for(var i3=0;i3<mydata.length;i3++){alert(t);... |
Ничего не выводит,а если написать <=,то пустой alert.
|
удалил
|
надо так
for(var i3=0;i3<mydata['TOPIC_LINK'].length;i3++){alert(t);... |
Вы про
$('#test').html('<a href="'+mydata['TOPIC_LINK'][1]+'">'+mydata2['TOPIC_NAME'][1]+'</a> ');? Да,там работает и с 0. |
vadim5june,
теперь все работает,спасибо вам большое! |
простая ошибка что то парились долго
|
С данным скриптом возникло еще одно затруднение. Код скрипта сейчас такой:
<div id="test"></div> <script type="text/javascript"> $.get( 'http://zveriki.ucoz.com/api/forum/0-1-1-3-$USER_ID$', function(data){ var mydata = new Array(); var i = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_LINK'){ if(mydata[$(this).text()] == undefined) mydata[$(this).text()] = new Array(); mydata[$(this).text()][i] = $(this).next().text(); i++; } }); var mydata2 = new Array(); var i2 = 0; $('name', data).each(function(){ if($(this).text()=='TOPIC_NAME'){ if(mydata2[$(this).text()] == undefined) mydata2[$(this).text()] = new Array(); mydata2[$(this).text()][i2] = $(this).next().text(); i2++; } }); var mydata3 = new Array(); var i3 = 0; $('name', data).each(function(){ if($(this).text()=='FORUM_NAME'){ if(mydata3[$(this).text()] == undefined) mydata3[$(this).text()] = new Array(); mydata3[$(this).text()][i3] = $(this).next().text(); i3++; } }); var t=''; for(var i4=0;i4<mydata['TOPIC_LINK'].length;i4++){ if(mydata3['FORUM_NAME'][i4]=='Игра "зверики"'){ t+='<a href="'+mydata['TOPIC_LINK'][i4]+'">'+mydata2['TOPIC_NAME'][i4]+'</a><br>'; } }; $('#test').append(t); if(t=''){ $('#test').append('У вас пока нет зверика'); } }, 'xml' ); </script> Мне нужно вывести текст,если у пользователя нет тем в форуме "Игра зверики". Для этого я использую условие в конце скрипта,оно работает,но только,если если есть другие темы. Если тем нет совсем,xml принимает вид: <methodResponse> <params> <param> <value> <array> <data> </data> </array> </value> </param> </params> </methodResponse> Насколько я понимаю,при этом массивы mydata остаются пустыми. Тогда последее условие не срабатывает. Как можно это исправить? |
попробуйте после 34 строчки
if(!mydata['TOPIC_LINK']){$('#test').append('У вас пока нет зверика'); return}; а снизу уберите |
Спс,помогло.
|
Часовой пояс GMT +3, время: 07:41. |