使用JQuery ajax()方法检索RESTful数据

我试图通过JQuery.ajax()方法从Asana API获取信息。 但是没有返回所需的结果,或显示错误。
这是我在JavaScript中的部分代码:

$(document).ready(function () { $('#buttonCallAjax').click(function () { jQuery.support.cors = true; $.ajax( { type: "GET", url: "https://app.asana.com/api/1.0/users/me", data: "{}", contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType: "jsonp", success: function (data) { alert(data); }, error: function (msg, url, line) { alert('error trapped in error: function(msg, url, line)'); alert('msg = ' + msg + ', url = ' + url + ', line = ' + line); } }); }); }); 

我已经阅读了很多关于ajax()方法的内容,但仍然在这个方法中找出了一些选项参数,比如data,dataType(因为这是跨域请求,我使用了jsonp)。
有人可以帮助成功从Asana API中提取信息吗?

尽管看起来Asana API目前不支持JSONP,但如果将来他们这样做并且您需要进行身份validation,则可以使用以下代码执行此操作。

 $.ajax( { url : 'https://app.asana.com/api/1.0/users/me', dataType : 'jsonp', beforeSend : function(xhr) { xhr.setRequestHeader('Authorization', 'Basic ' + btoa(API_KEY + ":")); } ); 

btoa函数编码为base64但在所有浏览器上都不支持 ,因此如果需要支持旧浏览器,则可能需要使用其他库。

更新

用户名也可以直接使用jQuery no encoding或setting headers设置。

  $.ajax( { url : 'https://app.asana.com/api/1.0/users/me', dataType : 'jsonp', username : API_KEY }); 

当使用JS访问API时,您的API_KEY将以明文forms出现在页面上。也许这些东西应该在服务器端完成。

经过一番研究后,它看起来并不像Asana的API支持立即返回JSONP。

此外,经过我自己的一些探测之后,它们看起来也不像是支持CORS,所以跨源XHR看起来不可能。 当然,我没有使用正确的身份validation进行测试,并且他们的服务可能配置为仅将CORS标头授予已授权的请求。

或者,您可以让服务器端脚本向API发出通用Web请求,并将结果代理回UI。

Interesting Posts