Использование API в Javascript
На тестовой странице приведено 3 примера по выборке:
- Законопроектов, рассмотрение которых завершено, зарегистрированных с 01.01.2011 по 31.03.2011;
- Списка действующих комитетов и комиссий;
- Списка действующих депутатов ГД и членов СФ, у которых фамилия начинается на «З».
Рассмотрим первый пример подробнее.
1) Подготовим контейнер под загружаемый контент. Изначально в нем будет отображаться анимированный ajax-бегунок.
<div class="column" id="column-1">
<div class="ajax"></div>
</div>
2) Подключим javascript-фреймворк jQuery и микро-шаблонизатор. Первый упростит работу с ajax-запросами и отображением результата, а второй позволит формировать результирующие шаблоны и удобно подставлять в них данные.
<!-- Библиотека jQuery и шаблонизатор -->
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/js/micro_tpl.js"></script>
3) Подготовим шаблон для отображения результата. С синтаксисом шаблонов вы можете ознакомится на сайте шаблонизатора.
<script type="text/html" id="column1_tmpl">
<h2><b>Ищем:</b> <%=data.wording%></h2>
<p class="founded">
<b>Найдено: </b><%=data.count%>
</p>
<h3>Результат поиска:</h3>
<ul>
<% for ( var i = 0; i < data.laws.length; i++ ) { %>
<li>
<a href="<%=data.laws[i].url%>"><%=data.laws[i].number%></a>.
<%=data.laws[i].name%>
<i>(внесен на рассмотрение <%=data.laws[i].introductionDate%>, <a href="<%=data.laws[i].transcriptUrl%>">стенограммы обсуждений</a>)</i>
</li>
<% } %>
</ul>
</script>
4) Подготовим код AJAX-запроса, получения данных, формирования и отображения результата.
var token = "10e644926dae6a63f3fb0a2f47b0e0ac0e544804";
$.ajax({
"url": "http://api.duma.gov.ru/api/" + token + "/search.json",
"data": {
"status": 6, // законопроекты, рассмотрение которых завершено
"registration_start": "2011-01-01", // в датой регистрации
"registration_end": "2011-03-31", // с 1 января 2011 по 31 марта 2011
"limit": 10 // вывести первые 10 найденных законопроектов
},
"dataType": "jsonp",
"success": function(data) {
// возникла ошибка, выводим код и сообщение об ошибке
if (data.code) {
$(".ajax").remove();
alert("Error #" + data.code + ": " + data.text);
return false;
}
// отправляем данные в шаблон и получаем конечный html
var resultHtml = tmpl("column1_tmpl", { data: data });
// выводим на странице результат
$("#column-1 .ajax").replaceWith(resultHtml);
}
});
Данные из API запрашиваются в формате JSONP в силу того, что выполняется кроссдоменный запрос, что запрещено при выполнении классических AJAX-запросов. При этом вызывается метод jQuery.ajax
, в котором указывается dataType = jsonp
. В остальном при использовании jQuery отличий от обычного AJAX-запроса нет.