Скрипт с парсингом 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, время: 02:06. |