platon_fedorovich
@platon_fedorovich
Люблю общение на IT-тематику

Как получить кол-во «расшариваний» (view count) для текущего URL из StumbleUpon (используя jQuery.getJSON)?

Приветствую!

Ищу решение данного вопроса уже довольно давно. Суть такая: нужно через jQuery.getJSON получить кол-во «расшариваний» из сервиса StumbleUpon в свой скрипт (кастомные шейр-кнопки).

Да, у сервиса есть шикарная документация на эту тему, но (по непонятным причинам) не сработывает то, что там написано. Нет, ну работает, конечно же, через адресную строку браузера.. но через jQuery.getJSON никак не получить значение — вылетает ошибка в консоли хрома.

Грубо говоря, если в браузере ввести пример из их API:
http://www.stumbleupon.com/services/1.01/badge.getinfo?url=http://www.treehugger.com/

то выдаётся отличный валидный JSON:
{
    "result": {
        "url": "http://www.treehugger.com/",
        "in_index": true,
        "publicid": "1tin26",
        "views": 123623,
        "title": "TreeHugger",
        "thumbnail": "http://cdn.stumble-upon.com/mthumb/428/925428.jpg",
        "thumbnail_b": "http://cdn.stumble-upon.com/bthumb/428/925428.jpg",
        "submit_link": "http://www.stumbleupon.com/badge/?url=http://www.treehugger.com/",
        "badge_link": "http://www.stumbleupon.com/badge/?url=http://www.treehugger.com/",
        "info_link": "http://www.stumbleupon.com/url/www.treehugger.com/"
    },
    "timestamp": 1443261036,
    "success": true
}

Но если попробовать обратиться через jQuery.getJSON из скрипта, то всё время будет вот такая ошибка:
badge.getinfo?url=http%3A%2F%2Fwww.treehugger.com%2F&callback=jQuery111203496418842114508_14…:1
Uncaught SyntaxError: Unexpected token :

При этом, мой скрипт вызова такой:
...
$.getJSON('http://www.stumbleupon.com/services/1.01/badge.getinfo?url=' + encodeURIComponent('http://www.treehugger.com/') + '&callback=?', function(response) {
  console.log(response);
});
...


Да, есть решения с помощью различных сторонних сервисов, типа YQL или Any Origin (и его open source альтернатива — Whatever Origin), через которые всё работает.. но это лишний запрос и время ожидания.

Также у YQL ограничение по запросам в сутки (в час), а Any Origin вообще платный и может забанить «без суда и следствия» при бесплатном использовании (который там разрешён для ознакомления). А вот с Whatever Origin почти всё получилось, но постоянно в реквесте приходит 404-я ошибка сервиса StumbleUpon вместо красивого JSON (который выше).. так что, тоже мимо.


Всё же главный вопрос: почему не работает на прямую через jQuery.getJSON?!
Подскажите чего делаю не так (может есть кейс решения?).. а то уже все ссылки по этой теме в гугле «посещённого цвета» :)
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Потому что кроссдоменный запрос. Не все так просто из-за политики безопасности. Читайте про CORS и JsonP
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы