• Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Вопросы по верстке, дизайну, управлению и настройки модулей СMS от uCoz » Юкоз API - описание, синтаксис, приемы » Как получить API данные по короткой ссылке, без ЧПУ (Способы обхода проблемы, PHP и JavaScript варианты)
Как получить API данные по короткой ссылке, без ЧПУ
Дата: Пятница, 08.11.2013, 01:53 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Как получить API данные по короткой ссылке, без ЧПУ

Итак, вариант № один.
С использованием ифрейма.
Чудовищное извращение, но имеет место быть.

Листинг:
Код
<script type="text/javascript">
function getApiShortLink(src){
var cframe = document.createElement('iframe');
cframe.src=cframe.name=src;
cframe.name=cframe.id='apiframe';
cframe.style.position='absolute';
cframe.style.left=cframe.style.top='0px';
cframe.style.height=cframe.style.width='1px';
cframe.style.visibility='hidden';
document.getElementsByTagName('body')[0].appendChild(cframe);
cframe.onload=function(){
var url=cframe.contentWindow.location.href.replace(/likbezz.ru/g,'likbezz.ru/api');
//alert(url);
cframe.parentNode.removeChild(cframe);
getApiContent(url);
};
};
function getApiContent(url){
$.get(url,function(d,b,c){
      var cont=$('#apiCont'),string=$('string',d);
      if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');}
      cont.html('<h1><a href="http://likbezz.ru'+string.eq(2).text()+'">'+string.eq(0).text()+'</a></h1><br /><br /><div>'+string.eq(1).text()+'</div>');
});
};
</script>


Контейнер:
Код
<div id="apiCont"></div>


Вызов:

Код
<script type="text/javascript">
getApiShortLink('http://likbezz.ru/api/publ/21-1-0-106');
</script>

---

Пример:
http://likbezz.ru/_example/_api/2013/get_api_short_link_iframe.html


 
Дата: Пятница, 08.11.2013, 19:53 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Вариант № два ) более изящный, но требует поддержки php - либо php от юкоз, либо внешней - любого хоста с php.

Принцип прост - отправить на сервер короткую ссылку и получить длинную.
Делается это несложно, отправляет короткая ссылка в параметре гет запроса, на сервере по ней осуществляется запрос header страницы и отдача адреса переадресации.
Как-то смутно на словах..

Короче, вот:
Код
<div id="apiCont"></div>
<script type="text/javascript">
$.getJSON('http://static.likbezz.ru/.api/data/get_short_link.php?callback=?',{'url':'http://likbezz.ru/api/publ/21-1-0-106'}, function (data,b,c) {
     if(c.status!='200'){return cont.html('<b style="color:#F33;">Извините, но произошла ошибка: «'+c.status+'» '+c.statusText+'!</b>');}
     if (data.url){
      $.get('/api'+data.url,function(d){
       var cont=$('#apiCont'),string=$('string',d);
       cont.html('<h1><a href="http://likbezz.ru'+string.eq(2).text()+'">'+string.eq(0).text()+'</a></h1><br /><br /><div>'+string.eq(1).text()+'</div>');
       });
      };
});
</script>


Где:
Код
<div id="apiCont"></div>

- контейнер для контента.

Код
http://static.likbezz.ru/.api/data/get_short_link.php?callback=?',{'url':'http://likbezz.ru/api/publ/21-1-0-106'}

- запрос и передача короткой ссылки.

Код
if (data.url){
      $.get('/api'+data.url,function(d){ ... }

- если ответ получен, совершаем запрос.

Остальное - как обычно.
---

Ну и сам файл get_short_link.php
Код
<?php
if (!isset($_GET['callback'])) {
       exit('Некорректные параметры запроса');
};
if (!isset($_GET['url'])) {
       exit('Некорректные параметры запроса');
};

function getNextLocation($url){
     $arr = get_headers($url);     
      for ($i=0,$j=count($arr); $i<$j; $i++){
       if (strpos($arr[$i], 'ocation:')){
        $url = substr($arr[$i],10);
        break;      
       }
      }
     return $url;
};

$url = $_GET['url'];
$callback = $_GET['callback'];
$url = getNextLocation($url);

echo $callback.'('."{'url':'".$url."'}".')';
?>

---

Пример: http://likbezz.ru/_example/_api/2013/get_api_short_link_json.html


 
Скрипты и коды для юкоз - Форум аццкого кодера » Вопросы по верстке, дизайну, управлению и настройки модулей СMS от uCoz » Юкоз API - описание, синтаксис, приемы » Как получить API данные по короткой ссылке, без ЧПУ (Способы обхода проблемы, PHP и JavaScript варианты)
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия