我正试图使用他们的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);
});
我使用jquery 1.9在一个简单的python服务器上处理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,
...
},
...
]
}
更新:
在我的ajax请求中添加async:false作为一个选项,使我返回了数据。有人知道为什么吗?
我相信您对异步函数使用了与AJAX一样的同步方法。举个错误方法的例子:
var f = function(){
$.ajax({
...
}).done(function(data){
console.log('done');
});
/* data isn't available yet - data is undefined */
return data;
};
AJAX函数会立即返回。尽管如此,回应还没有到来。当数据从服务器返回时,done
回调将被触发,您应该对此做出反应。