Главная » Функционал » PHP и API » Парсинг API при помощи JS или PHP

Парсинг API при помощи JS или PHP

18.10.2012 в 20:55
Автор: Sheriff   

1. Введение.
Что такое "парсинг"? Парсингом (от англ. parse) называют процесс анализа или разбора определенного контента с помощью специальных скриптов.
API сайта предоставляет веб-мастеру возможность взаимодействия с сайтом через скрипты (PHP или JavaScript).
В этой статье мы рассмотрим парсинг API, то есть получение некоторых данных с сайта скриптом через API.

2. Активация API.
Включение возможности использования API проводится в панеле управления сайтом в разделе “Настройки” > “Общие настройки” > “Разрешить использование API”.


Использовать API при наличии ключа нужно посредством GET-запроса следующим образом: http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172?apikey=APIKEY

То есть к запросу просто добавляем параметр apikey с нашим ключом.
Ключ нужен в том случае, если вы не хотите, чтобы кто угодно имел доступ к API вашего сайта.

3. Описание API, как использовать.
На данный момент API доступен в 11 модулях: blog, board, dir, gb, load, news, photo, publ, stuff, forum, index. Советуем внимательно ознакомиться с инструкцией по описанию использования базового API.

Зачем нужно API?
Допустим, у нас есть свой сайт, по адресу blog.ucoz.ru. Берём какую-нибудь ссылку на сайте, например, ссылку на материал (модуль Блог): http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172
После доменного имени в ссылку добавляем слово "api", вот так: http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172
То есть фактически, для использования API (если он активирован для сайта) достаточно вписать префикс /api/ между адресом сайта и именем модуля.

Но для чего?
Перейдём по полученной ссылке (то есть http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172). Вместо привычного шаблона система выдает страницу с XML-кодом. Всё то же самое, только используется не шаблон страницы, а формируется XML-код.

Зачем нам XML-код?
Допустим, нам необходимо узнать название материала с помощью php-скрипта или с js-скрипта (для чего - узнаете позже). При обычных условиях (не имея API), нам бы пришлось парсить полученный текст страницы с помощью регулярных выражений. Составление регулярных выражений - очень сложное занятие. С XML-кодом же намного проще: его не надо парсить регулярными выражениями, он структурирован, стандартизирован, никакой зависимости от оформления исходного кода страницы.
Т.к. XML стал де-факто стандартом в передаче данных, то работать с ним можно на любом языке программирования, как PHP, так и JS.

Далее в статье под парсингом данных мы будем подразумевать разбор XML-кода с данными.

4. Парсинг данных через PHP.




Попробуем получить название этого материала: http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172

Code
<?php

$___notjson = 1;

$context = stream_context_create( // создаём контекст
                             array(
                    'http' => array( // в качестве транспортного протокола будет использоваться http://
                     'method' => 'GET', // метод запроса - GET
                     'header' => 'Content-Type: text/xml', // xml
                     'timeout' => 8 // время на соединение с сервером - 8 сек
                    )
                             )
);

// получаем содержимое (XML-код) страницы http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172
$page = file_get_contents('http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', false, $context);

// разбираем полученный XML в массив $xml
$xml = xmlrpc_decode($page, 'utf8');

// отображаем какую-нибудь информацию из полученного

// например, заголовок материала
echo $xml['TITLE'];

// или посмотрим всё содержимое массива
print_r($xml);

?>


echo $xml['TITLE'] отобразит нам Итоги 2010
print_r($xml) отобразит нам весь массив с данными этого материала, т.е.:

Code
Array
(
                      [MATERIAL_ID] => 172
                      [TITLE] => Итоги 2010
                      [MESSAGE] => <div style="text-align: justify;">
<img alt="" src="http://lu-work.ucoz.com/blogpics/ny_2011.jpg"><br><br>Вот и наступил 2011 год. В такие дни всегда хочется оглянуться и проанализировать что же было сделано за прошедший год. <div><br>Если ничего не падало, не обновлялось по несколько суток, не взрывалось и не искрило - это вовсе не значит что ничего сделано не было. На самом деле у нас этот год был годом вдумчивого развития, в определенной степени экстенсивного - нам уже как-никак 5 лет, почтенный для интернета возраст :)<br>Повысилась безопасность и стабильность работы системы, выросло комьюнити, расширилась функциональность, гораздо лучше стала работать техподдержка.<br><br>Итак, что же по пунктам можно отметить, и что вспоминается за прошедший 2010 год?<br><br><ul><li>Общий трафик системы достиг ста миллионов хитов в сутки.*</li></ul><img alt="" src="http://meddy.ucoz.kz/one.png"><br><div align="center"><font color="#696969"><i>Общий трафик системы</i></font></div><div style="text-align: left;" align="center"><font color="#696969"><i><br></i></font></div><div style="text-align: left;" align="center"><font color="#696969"><i> <span style="font-size: 7pt;">* без учета поисковых и прочих известных ботов</span></i></font></div><ul><li>
Топ100 системы замыкают сайты с посещаемостью 10 000 человек в сутки (в первый год работы системы, замыкающие сайты имели посещаемость 100 человек в сутки). Также на первые позиции в топе стали попадать нерусскоязычные ресурсы.</li></ul><div align="center"><img alt="" src="http://meddy.ucoz.kz/ru-sitecount-in-top.png"><br><font color="#a9a9a9"><i>Рост числа русскоязычных сайтов за 2010<br><br><img alt="" src="http://meddy.ucoz.kz/de-sitecount-in-top.png"><br>Рост числа немецкоязычных сайтов за 2010<br></i></font></div><br>
<br>
                             <div style="border: 1px solid rgb(232, 155, 136); background-color: rgb(255, 239, 232); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Количество сайтов в системе превысило миллион. Причем это произошло дважды, так как традиционный летний спад в сети и придирчивое вычищение дорвеев и мертвых сайтов уменьшало эту цифру.</li><li>Мы стали более открыты и общительными с нашими                             
пользователями. В том числе нерусскоязычными. У нас появились страницы в
                             Facebook на русском, английском, венгерском, испанском и немецком                             
языках. А так же англо-,  и немецко- язычные твиттеры. </li><li> В системе прошло 3 конкурса - совместный с Microsoft <a target="_blank" href="http://konkursi.ucoz.ru/news/opredeleny_pobediteli_konkursa_ie_reload_v_nominacii_za_luchshij_obzor_posvjashhennyj_ie8_luchshij_webslice/2010-03-23-17">"IE Reload",</a><b> </b>эпистолярный <a target="_blank" href="http://win.ucoz.ru/news/objavlenie_rezultatov_konkursa_obzor/2010-10-25-7">"Обзор"</a> и <a href="http://win.ucoz.com/news/winners/2010-10-25-7#1" target="_blank">Best  uCoz Website</a> на лучший  нерусскоязычный сайт, да и сам <a target="_blank" href="http://win.ucoz.ru/">конкурсный сайт</a>
                             у нас пережил второе рождение. <img src="http://s102.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile" /> <i>Кстати, скоро после Нового года                             
стартует еще один конкурс, те, кто умеет или хочет научиться работать с                             
видео - готовьтесь!</i></li><li>Вышел в свет <a target="_blank" href="http://book.ucoz.ru/">учебник по системе</a>.
                             Очень быстро разошелся по книжным полкам страны (и не одной!) и вышел                             
еще раз - уже вторым, дополненным изданием.  Также появилась его электронная версия. (В начале 2011 года ожидается его англоязычная версия.)</li><li>Добавлены локализации на румынском языке и иврите (<i>последняя на текущий момент в бета версии</i>).</li><li>В альфа-версии появилась возможность использования PHP на uCoz. (Сейчас идет тестирование, открытый запуск ожидается в январе.)</li></ul></div><br>
                             <div style="border: 1px solid rgb(255, 216, 0); background-color: rgb(255, 247, 205); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Модуль интернет-магазина очень сильно расширился внешним                             
функционалом, встроенными платежными сервисами и внутренними опциями. С                             
февраля он выходит из беты и будет стоить 2$  в месяц.</li><ul><li>Экспорт товаров различные форматы: XML, CSV</li><li>Встроенные способы автоматизированной оплаты: Webmoney, Робокасса, Paypal, SMS (Smscoin), Банковские карты (Liqpay)<br></li><li>Импорт товаров из Excel</li><li>Гибкая и настраиваемая система скидок для покупателей</li><li>Возможность автозаполнения описания из готового каталога товаров и автоматический поиск картинок для товара.</li><li>Выгружаемый прайс-лист формата MS Excel</li><li>Анимированная корзина<br></li><li>У товаров появились опции - цвет, размер, комплектация и т.д.</li><li><a target="_blank" href="http://forum.ucoz.ru/forum/43-32287-1">Подробный список всех изменений</a>.</li></ul></ul></div><br>
                             <div style="border: 1px solid rgb(157, 189, 255); background-color: rgb(225, 235, 255); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Появилась возможность пополнения аккаунта на uCoz при помощи SMS из 62-х стран в том числе                             
Казахстан, Грузия, Литва, Латвия, Эстония, Израиль, Германия и т.д.<br></li><li>Появился индивидуальный фильтр от спама: сообщения с указанными                             
адресами добавляться не будут. </li><li>Возможность разрешить  гостям оставлять комментарии.</li><li>В нашем <a href="https://domain.ucoz.com" target="_blank">сервисе по регистрации доменов</a> стали доступны новые доменные зоны и системы приема платежей.</li><li>В Webtop'е   появилось новые собственные приложение "Менеджер задач" и "Учет рабочего времени". Добавились немецкий, болгарский и венгерский языки.</li><li>Появилась платная служба техподдержки. Значительно улучшилась работа всей службы технической поддержи - повысилось качество и скорость ответов.</li></ul></div><br>
                             <div style="border: 1px solid rgb(0, 204, 0); background-color: rgb(225, 255, 215); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Появился интегрированный в систему сервис сокращения ссылок <a target="_blank" href="u.to">u.to</a> и вариант работы с проксированием внешних ссылок.</li><li>Появился проект <a href="http://partner.ucoz.ru" target="_blank">partner.ucoz.ru</a>.</li><li>Появились специальные <a target="_blank" href="http://browsers.ucoz.ru/">сборки браузеров </a>с <a target="_blank" href="http://utoolbar.ucoz.net/">тулбарами</a> для облегчения работы с сайтом.</li></ul></div><br><div style="border: 1px solid rgb(181, 181, 181); background-color: rgb(244, 244, 244); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Проапгрейдилась железная составляющая многих серверов и появились две новые площадки их размещения.</li></ul></div><br>

                             <div style="border: 1px solid rgb(218, 30, 226); background-color: rgb(254, 230, 255); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Редактор шаблонов стал более наглядным, появилась подсветка кода.<br></li><li>Добавилась настройка для картинок типа "Максимальные размеры картинки", (а                             
старая осталась как "Размеры уменьшенной копии").</li><li>Добавлена форма для отправки сообщения на снятие таблички +18.</li><li>Добавлена форма для отправки сообщений для разблокировки сайта.</li><li>При добавлении/удалении в любом модуле сделано автоматическое обновление дискового пространства.</li><li>Добавлена опция для отрицания в настройках информеров при указании категорий.</li><li>Добавлена возможность вывода аватаров пользователей при выводе списка материалов в модулях (блог, новости).</li><li>В доске объявлений сделана возможность фильтрования неактивных и истекших материалов.</li></ul></div>
<br>
                             <div style="border: 1px solid rgb(30, 226, 124); background-color: rgb(226, 250, 238); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Настроена правильная реакция на несуществующие url в модулях.</li><li>Внедрен 301 редирект для склейки имени сайта с www и без него.<br></li><li>Внесены изменения, которые не дают "плодиться" дубликатам контента внутри сайта.</li></ul></div>
<br>
                             <div style="border: 1px solid rgb(255, 149, 83); background-color: rgb(255, 240, 254); padding: 8px 11px; margin: 0px; color: rgb(0, 0, 0);"><ul><li>Произошли изменения в работе сессий, важные для  аккаунта. С точки                             
зрения и пользователя сайта, и владельца сайта сессии стали более                             
безопасными. Число одновременно активных сессий одного пользователя                             
гарантированно - одна. А долгое редактирование документа не приводит больше к "вылету по таймауту". (<i>Это большое и сложное системное изменение.</i>)</li><li>Внедрено кеширование, что очень снизило нагрузку на сервера.</li><li>Реализовывались анти-ддос методы. (Различные сервера и сайты на uCoz постоянно подвергаются ддос-атакам разной степени сложности и интенсивности, однако 99% из них никто из пользователей  не замечает, сайты продолжают работать в штатном режиме.)</li><li>Изменения
                             группы пользователя и поступление новых ЛС теперь видны сразу (при                             
следующем обновлении страницы, без необходимости перелогиниваться).</li></ul></div> </div><div><br></div><div>Это то основное, что запомнилось нам за прошедший год. Безусловно, технически было сделано множество иных изменений, и огромное число мелких багфиксов.</div><div>Система обновлялась в так называемом теневом (фоновом) режиме, без остановки серверов и коллапсирования. Многие изменения, по-сути, и не заметны для наших пользователей, и потому иногда можно услышать вопрос - " а где же обновления"?                             
Но тем не менее - система развивается и обновляется, но не скачкообразно, большими куммулятивными обновлениями, как это было в 2009-ом году, а плавно и в фоновом режиме.</div><div>Что весьма важно, повышается стабильность и надежность работы системы. К сожалению, на определенном этапе для многих программных продуктов и сервисов это становится настоящей проблемой, что часто ведет к умиранию или сильному затуханию. Мы же искренне рады, что нам удается успешно справляться со всеми проблемами роста, и улучшать свою работу и функциональность. </div><div>Нам тоже все время хочется развиваться быстрее, а работать еще лучше, мы осознаем свои упущения и недоработки, но при этом делаем все возможное, чтобы не допускать старых ошибок и становиться лучше, а сервис предоставлять качественней.</div><div><br><b>Новый, 2011 год обязательно порадует нас, и вас, наших пользователей, новыми свершениями и достижениями. Мы планируем полноценно запустить uNet, продолжать развивать uCoz, завоевывать новые рынки и сердца новых пользователей, мы знаем, большая часть из вас нас ценит и любит. И, что самое главное, не только мы сами рассчитываем на новые свершения, мы знаем, что наши усилия, наш сервис многим тысячам людей позволяют, и позволят в новом году осуществлять свои свершения: реализовывать деловые и творческие задумки, воплощать мечты и проекты.</b></div><div><b><br>С наступившим праздником, удачи и успехов!</b><br><br><i>                             

<span style="font-size: 8pt;"><div align="right">Спасибо Ирине aka <a href="http://blog.ucoz.ru/index/8-7264" target="_blank">Meddy</a> за помощь в подготовке большей части данного поста. </div></span>
</i></div></div>
                      [ENTRY_URL] => http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172
                      [CATEGORY_NAME] => uCoz
                      [CATEGORY_URL] => http://blog.ucoz.ru/blog/1-0-6
                      [COMMENTS_NUM] => 157
                      [COMMENTS_URL] => http://blog.ucoz.ru/blog/ucoz_2010/2011-01-01-172#comments
                      [USER_NAME] => Kurt
                      [USER_ID] => 6
                      [RATING] => 0.0
                      [RATED] => 0
                      [READS_NUM] => 23293
                      [DATE] => 01.01.2011
                      [TIME] => 17:08
                      [TIMESTAMP] => 1293890935
)


Подробнее о функциях PHP для парсинга API смотрите в официальной документации PHP: http://www.php.net/manual/ru/ref.xmlrpc.php

5. Парсинг данных через JavaScript.
Работа с API через JavaScript аналогична PHP.
Мы, для простоты разработки, будем использовать библиотеку jQuery, тем более, не использовать её не получится - она подключается автоматически на всех сайтах uCoz, вне зависимости от того, хотите ли вы этого или нет (без неё, кстати, некоторые функции на uCoz перестанут работать).

А теперь перейдём к нашему коду.

Code
<script type="text/javascript">
// Делаем GET-запрос на страницу http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172
$.get(
                 'http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', // адрес API-страницы
                 function(data){ // функция, которая сработает, при условии, что наш запрос на страницу успешен
                    // тут 'data' - это переменная, которая будет содержать ответ от запрашиваемой страницы, т.е. XML-код

                          // а теперь делаем разбор данных
                          var mydata = new Array();
                          $('name', data).each(function(){
                     mydata[$(this).text()] = $(this).next().text();
                          });

                          // теперь можем работать с разобранными данными
                          // например, выведем в браузере название спарсенного материала и его автора
                          alert(mydata['TITLE']); // отобразит название материала
                          alert(mydata['USER_NAME']); // отобразит автора материала
                 },
                 'xml' // тут персонально для jQuery указываем тип данных, который она получит в проводимой нами процедуре запроса по адресу API-страницы
);
</script>


Этот код, как видно, «даст» нам название материала и автора материала. Вставлять его можно в любое место шаблона вашего сайта.
Для того, чтобы вставить эти данные в страницу, а не выводить их в окне, вместо alert() нужно использовать функцию jQuery $().html():

Code
<div id="otvet"></div>
<script type="text/javascript">
$.get(
                 'http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172',
                 function(data){
                          var mydata = new Array();
                          $('name', data).each(function(){
                        mydata[$(this).text()] = $(this).next().text();
                          });
                          $('#otvet').html('Пользователь '+mydata['USER_NAME']+' написал материал: «'+mydata['TITLE']+'»');
                 },
                 'xml'
);
</script>


Этот код вставит на страницу (в div c id="otvet") следующий текст:

Quote
Пользователь Kurt написал материал: «Итоги 2010»


Учтите, что парсинг API через javascript будет работать только с теми ссылками, которые принадлежат вашему домену. То есть с сайта site1.ru можно сделать запрос на http://site1.ru/api/blog, но нельзя на http://site2.ru/api/blog!

6. Зачем это нужно?
Ответ на этот вопрос зависит от вашей фантазии и выходит за рамки данной статьи. В качестве хорошего примера использования API, можно привести ссылку на скрипт «отображение контента по критерию»

Авторы данного мануала: Driver86 ~ cybernova.net и Sheriff ~ fi4a.ru

парсинг, JS, api


Рейтинг: 79  (помогла ли Вам эта инструкция: да / нет)          Просмотров: 32154          Комментариев: 26

Похожие инструкции

27.04.2016 в 17:48      0  

А будет ли индексироваться текст выведенный на странице с помощью API ?
24.01.2016 в 10:18      0  

при использовании php - выдает ошибку Call to undefined function xmlrpc_decode()
07.08.2014 в 07:26      0  

Тут написано про PHP а где через JS ?? sad
23.08.2014 в 23:30      0  

Обратите внимание на 5-й шаг.
24.08.2014 в 10:22      0  

Спасибо обратил, но чо как и куда устанавливать?
Извините за глупый вопрос!
27.08.2014 в 10:44      0  


Цитата
Вставлять его можно в любое место шаблона вашего сайта.
21.10.2013 в 11:54      0  

Здравствуйте!
Можно ли из чужого сайта (например, http://allods.mail.ru/guilds100.php?shard=5) с периодически обновляемой таблицей, вывести нужную строку на своем сайте на ucoz ? (PHP не оплачивал)
13.02.2013 в 00:34      0  

Ребята, помогайте! У меня, как вы понимаете сайт ucoz. Так вот: на него купил отдельный домен. И подключил к ему Яндекс.Почту.. Все бы было нечего, но там, самостоятельная регистрация пользователей производиться через API яндекса. Я создал форму с этим API для отправки Get.
http://forum.ucoz.ru/_fr/470/8083954.png - это код формы
И при клике "Регистрация"меня перебрасывает на страницу xml-формата.
http://forum.ucoz.ru/_fr/470/6210804.png - а это код xml-документа, который выдает ответ в случае успешной регистрации <ok uid="..."/>, в противном случае - <error reason='...'/>.
Как мне можно сделать, чтобы эта страница отображалась у меня в html-виде и в дизайне моего сайта, а не в xml-формате. И главное, чтобы на странице было написано "Регистрация успешно завершена" или же "Ошибка регистрации. <причина>"на странице, желательно с формой регистрации?
13.02.2013 в 19:53      +1  

13.02.2013 в 21:32      0  

Спасибо огромное!
16.11.2012 в 22:39      0  

А как можно вывести все добавленные материалы? К примеру вывести все тайтлы и ссылки на каждый из них, например из модуля блог?

Типо: /blog/тра-ля-ля1 Название1
/blog/тра-ля-ля2 Название2 и так далее
03.11.2012 в 19:18      0  

Подскажите как проверить допустим, TITLE из раздела, на условие?
Пример: http://site.ru/api/load - здесь 20 материалов, мне нужно вывести только один материал с определенным TITLE

Всё, разобрался!
30.10.2012 в 01:17      0  

Доброго вам времени суток. У меня вопрос, а как вывести данные с персональной страницы пользователя > http://www.nabran.ru/api/index/8-115
Мне необходимо вывести значение имени группы пользователя и имя пользователя в модуле интернет магазин > http://www.nabran.ru/shop/user/115/goods

По стандарту эти значения юкоз не предоставляет. Буду очень благодарен, заранее спасибо.
30.10.2012 в 11:31      0  

Quote
Доброго вам времени суток. У меня вопрос, а как вывести данные с персональной страницы пользователя > http://www.nabran.ru/api/index/8-115

В мануале написан пример с готовым способом. smile

Quote
Мне необходимо вывести значение имени группы пользователя и имя пользователя в модуле интернет магазин > http://www.nabran.ru/shop/user/115/goods

К сожалению, в ИМ API отсутствует.
22.11.2012 в 00:49      0  

Здравствуйте!!!

Скажите пожалуйста, как правильно поместить сюда

$('#otvet').html('Пользователь '+mydata['USER_NAME']+' написал материал: «'+mydata['TITLE']+'»');

Вот эту

<li class="yt-uix-slider-slide-item ">
<div class="browse-item yt-tile-default yt-uix-tile">

<a href="$ENTRY_URL$" class="ux-thumb-wrap contains-addto ">
<span class="video-thumb ux-thumb ux-thumb-128 ">
<span class="clip"><img onload="" alt="Значок видео
" src="//i3.ytimg.com/vi/$AUTHOR_NAME$/default.jpg">
</span></span><span class="video-time">$TIME$</span>

<span class="yt-uix-button-content">
</span>

</a>
<div class="browse-item-content">
<h3 dir="ltr">
<a href="$ENTRY_URL$" title="$TITLE$" class="yt-uix-tile-link">
$TITLE$
</a> </h3>

<span class="browse-item-info">
<a href="$PROFILE_URL$" class="yt-user-name " dir="ltr">
$USERNAME$
</a>

</span>
</div>
</div>

</li>

ВОТ САМ САЙТ ГДЕ БУДЕТ ВЫВОДИТСЯ http://www.studiorr.ucoz.ru/publ/
28.10.2012 в 21:44      0  

Скажите, пожалуйста, а если я парсю страницу, скажем, раздел фотографий, мне нужно вывести несколько последних фото
Code
$('#otvet').html('<img src='+mydata['PHOTO_URL']+'>');

выводит только первую, там много PHOTO_URL, как обратиться ко всем по порядку?
28.10.2012 в 21:49      0  

Там уже двумерный массив тогда нужен. Я так реализовывала:

Code
...
    var mydata = new Array();    
    $('array > data > value', data).each(function(i){    
    mydata[i] = new Array();
    $('name', data).each(function(j){    
    mydata[i][$(this).text()] = $(this).next().text();    
    });

$('#otvet').html('<img src='+mydata[i]['PHOTO_URL']+'>');
29.10.2012 в 13:05      0  

У вас не хватает });, ну это ладно, данный код у меня выдает две одинаковые фотки, не подскажите почему?
Code
<div id="otvet"></div>  
  <script type="text/javascript">  
  $.get(  
  'http://easyen.ru/api/photo/0-1-0-17-$_USER_ID$',  
  function(data){  
  var mydata = new Array();  
  $('array > data > value', data).each(function(i){  
  mydata[i] = new Array();  
  $('name', data).each(function(j){mydata[i][$(this).text()] = $(this).next().text(); });  
  });
  
  $('#otvet').html('<img src='+mydata[1]['PHOTO_URL']+' width=150 >'+'<img src='+mydata[2]['PHOTO_URL']+' width=150 >');
  
  
  },  
  'xml'  
  );  
  </script>
29.10.2012 в 13:30      0  

Code
<div id="otvet"></div>  
  <script type="text/javascript">  
  $.get(  
  'http://easyen.ru/api/photo/0-1-0-17-$_USER_ID$',  
  function(data){  
  var mydata = new Array();  
  $('array > data > value', data).each(function(i){  
  mydata[i] = new Array();  
  $('name', data).each(function(j){  
  mydata[i][$(this).text()] = $(this).next().text();  
  });  

  $('#otvet').html('<img src='+mydata[1]['PHOTO_URL']+' width=150 >');  
  });
  
  },  
  'xml'  
  );  
  </script>
29.10.2012 в 13:41      0  

Пока редактировал комент, вы ответили. Я }); поставил перед выводом. Хочу вывести ряд фоток, а они выводятся одинаковые.

Code
<div id="otvet"></div>   
   <script type="text/javascript">   
   $.get(   
   'http://easyen.ru/api/photo/0-1-0-17-$_USER_ID$',   
   function(data){   
   var mydata = new Array();   
   $('array > data > value', data).each(function(i){   
   mydata[i] = new Array();   
   $('name', data).each(function(j){mydata[i][$(this).text()] = $(this).next().text(); });   
   });
    
   $('#otvet').html('<img src='+mydata[1]['PHOTO_URL']+' width=150 >'+'<img src='+mydata[2]['PHOTO_URL']+' width=150 >');
    
    
   },   
   'xml'   
   );   
   </script>
29.10.2012 в 14:19      +3  

Для того, что бы получить конкретное значение, проверяем его имя:

Code
var i = 0;
$('name', data).each(function(){
if($(this).text()=='PHOTO_URL'){
if(mydata[$(this).text()] == undefined) mydata[$(this).text()] = new Array();
mydata[$(this).text()][i] = $(this).next().text();
i++;
}
});


Здесь была добавлена переменная i, т.к. у нас на странице несколько PHOTO_URL.
В итоге мы получим список фотографий, отсортированных в том порядке, в котором они были отсортированы на исходной странице
29.10.2012 в 15:04      +1  

Отлично, работает, спасибо! Кому понадобиться, привожу полный код для вывода последних добавленных пользователем фотографий в его профиль:
Code

<div style="padding:3px"></div>
   <div id="otvet"></div>   
   <script type="text/javascript">   
   $.get(   
   'http://yousite.ru/api/photo/0-1-0-17-$_USER_ID$',   
   function(data){
    
var mydata = new Array();   
var i = 0;   
$('name', data).each(function(){   
if($(this).text()=='PHOTO_URL'){   
if(mydata[$(this).text()] == undefined) mydata[$(this).text()] = new Array();   
mydata[$(this).text()][i] = $(this).next().text();   
i++;   
}   
});

   $('#otvet').html('<img src='+mydata['PHOTO_URL'][0]+' width=160 >'+' <img src='+mydata['PHOTO_URL'][1]+' width=160 >'+' <img src='+mydata['PHOTO_URL'][2]+' width=160 >');
    
   },   
   'xml'   
   );   
   </script>   


Еще, если есть у кого какие мысли, чтобы не сами фотки грузились, а их миниатюры, чтобы быстрее страница загружалась.
04.05.2013 в 09:00      0  

Всем спасибо за код двумерного массива. Сама бы я долго мучилась
21.10.2012 в 22:53      +2  

Ребят, у вас ошибка :)))

Code
<div id="otvet"></div>  
<script type="text/javascript">  
$.get(  
  'http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172',  
  function(data){  
  var mydata;  
  $('name', data).each(function(){  
  mydata[$(this).text()] = $(this).next().text();  
  });  
  $('#otvet').html('Пользователь '+mydata['USER_NAME']+' написал материал: «'+mydata['TITLE']+'»');  
  },  
  'xml'  
);  
</script>


надо var mydata = [];
это же массив)
22.10.2012 в 13:50      +1  

Исправлено, спасибо smile