0

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);
});

http://localhost:3501シンプルなpythonサーバーでjquery 1.9を使用しています。私はjsonpを扱った経験がありません。jsonデータを取り戻すのを手伝ってください。返されるデータは次のようになります。

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

アップデート:

ajax リクエストのオプションとして async: false を追加すると、データが戻ってきました。誰かが理由を知っていますか?

4

1 に答える 1

1

AJAXのように、非同期関数に同期アプローチを使用していたと思います。間違ったアプローチの例:

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

AJAX 関数はすぐに戻ります。とはいえ、まだ返事は来ていません。データがサーバーから返されたdoneときにコールバックがトリガーされ、それに反応する必要があります。

于 2013-02-11T12:59:25.287 に答える