2011-03-13 30 views
1

我有一个问题让这个jQuery.ajax调用工作。当脚本执行时,我得到一个错误(textStatus =“error”),但没有错误信息(errorThrown =“”)。Kanbanpad API调用(jQuery AJAX)

$.ajax({ 
    type: 'GET', 
    url: 'http://www.kanbanpad.com/api/v1/projects.json', 
    username: '[email protected]', 
    password: 'myAPIkey', 
    dataType: 'json', 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert(textStatus+': '+errorThrown); 
    } 
}); 

如果我手动打开API URL(上面)并键入我的登录凭据,我会得到正确的JSON响应。所以,我不确定我做错了什么。我的代码是否格式错误?

如果您需要了解有关API的更多信息,请访问http://www.kanbanpad.com/api/v1

+0

什么是jqXHR对象有什么意见? – DefyGravity 2011-03-13 00:36:31

+0

@DefyGravity我不知道你在问什么,你能更具体吗? – therealklanni 2011-03-13 01:01:18

+0

in function error:function(jqXHR,textStatus,errorthrown){alert(JSON.stringify(jqXHR));} JSON来自www.json.org。或者只是在js调试器中查看;) – DefyGravity 2011-03-13 01:11:00

回答

0

这里是修复:

更改URL价值http://username%40domain.com:[email protected]/api/v1...

无论出于何种原因,jQuery的(1.5.1,也试图与1.4.4)不流通usernamepassword参数到网上服务器是正确的(还是根本没有?),因此可以通过在URL字符串中包含凭据来进行身份验证,而不是使用这些参数。

1

该页面使用HTTP basic auth,但你只是张贴在请求一个用户名/密码。您必须正确设置auth令牌并将它们传递到标题中。这是一个simple tutorial on HTTP basic auth over AJAX - 注意AJAX部分有一个jQuery特定的例子。

+0

我并不是说你错了什么,我只是想澄清。因为api.jquery.com文档中提到“如果服务器在提供响应之前执行HTTP身份验证,则可以通过用户名和密码选项发送用户名和密码对。”所以这就是我这样做的原因。我混淆了2种不同类型的身份验证? – therealklanni 2011-03-13 02:00:14

+0

我从来没有注意到API中的那些,我错误地认为你是通过这些参数(在数据选项中)。我道歉。 – JAAulde 2011-03-13 11:23:01