![](/img/trans.png)
[英]Sending form data to restful web service @POST method using jquery and ajax
[英]retrieve RESTful data using JQuery ajax() method
我试图通过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。
此外,经过我自己的一些探测之后,它们看起来也不像是支持CORS,所以跨源XHR看起来不可能。 当然,我没有使用正确的身份验证进行测试,并且他们的服务可能配置为仅将CORS标头授予已授权的请求。
或者,您可以让服务器端脚本向API发出通用Web请求,并将结果代理回UI。
尽管看起来Asana API目前不支持JSONP,但如果将来他们这样做并且您需要进行身份验证,则可以使用以下代码执行此操作。
$.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将以明文形式出现在页面上。也许这些东西应该在服务器端完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.