繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM