2013-02-11 2 views
0

Я пытаюсь получить доступ к моим закладам киптэта, используя their api.Как получить доступ к kippt api, используя только jquery ajax?

Api выглядит достаточно простым, и я могу получить к нему доступ в своем терминале, выполняя запрос curl. Но когда я пытаюсь выполнить кросс-доменный запрос jsonp с jquery ajax в браузере, я получаю ошибку 401 UNAUTHORIZED.

Вот мой код:

var authconfig = { 
    api_url: 'https://kippt.com/api/', 
    username: 'amit_e', 
    password: '*****' 
} 

$.ajax({ 
    url: authconfig.api_url + 'lists', 
    username: authconfig.username, 
    password: authconfig.password, 
    dataType: 'jsonp', 
    async: false, 
    type: 'GET' 
}).done(function(data){ 
    console.log(data); 
}).fail(function(jqXHR, textStatus, errorThrown){ 
    console.log(errorThrown); 
}); 

Я использую JQuery 1.9, работающий на http://localhost:3501 на простом сервере питона. У меня нет опыта работы с jsonp. Поэтому, пожалуйста, помогите мне вернуть данные json. Возвращаемые данные должны выглядеть следующим образом:

{ 
    "meta": { 
     "limit": 20, 
     "next": "/api/clips/?limit=20&offset=20", 
     "offset": 0, 
     "previous": null, 
     "total_count": 33 
    }, 
    "objects": [ 
     { 
      "id": 15, 
      ... 
     }, 
     ... 
    ] 
} 

UPDATE:

Добавление асинхронной: ложь как вариант на мою просьбу AJAX вернул меня мои данные. Кто-нибудь знает, почему?

+1

Вы должны проверить свои учетные данные. Кроме того, если я правильно напомню, что установка 'dataType' на' jsonp' автоматически добавит параметр 'callback'. Вы проверили, какова форма запроса на вкладке «Сеть» вашего браузера? – Alexander

+0

@ Александр дважды проверил мои кредиты - не работает - такая же ошибка. –

+0

Можете ли вы уточнить, где вы работаете с данными, возвращаемыми с сервера? Я считаю, что вы неправильно используете обратный вызов. – Alexander

ответ

1

Я считаю, что вы использовали синхронный подход для асинхронных функций, таких как AJAX. Пример неправильного подхода:

var f = function(){ 
    $.ajax({ 
     ... 
    }).done(function(data){ 
     console.log('done'); 
    }); 
    /* data isn't available yet - data is undefined */ 
    return data; 
}; 

Функции AJAX немедленно возвращаются. Хотя ответы еще не наступили. Обратный вызов done будет запущен, когда данные будут возвращены с сервера, и вы отреагируете на него.

Смежные вопросы