如何仅使用jquery ajax访问kippt api?

时间:2013-02-11 12:21:55

标签: jquery ajax api cross-domain

我正在尝试使用their api访问我的kippt书签。

api看起来很简单,我可以在终端上执行curl请求。但是当我在浏览器中尝试使用jquery ajax进行跨域jsonp请求时,出现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);
});

我在一个简单的python服务器上使用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,
            ...
        },
        ...
    ]
}

更新:

添加async:false作为我的ajax请求的选项让我恢复了我的数据。有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

我相信你正在使用同步方法来实现异步函数,就像AJAX一样。举个错误方法的例子:

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

AJAX函数立即返回。尽管如此,答案尚未到来。当从服务器返回数据时,将触发done回调,您将对其做出反应。