【问题标题】:Asana project is created but ajax readystate 0Asana 项目已创建,但 ajax 就绪状态为 0
【发布时间】:2016-11-30 05:48:21
【问题描述】:

我有一个访问 Asana API 的 php 应用程序。我能够在 Asana 中创建一个项目。但是,对 API 类的 ajax 调用返回的是 readystate=0。

在 firebug 中进行故障排除时,我还注意到网络控制台有 302、400(??) 和 200 状态代码。我认为 400 状态代码与无效请求或格式错误的 url 有关,但项目还是被创建了。

有什么想法吗?

更新:更多信息。

我有一个 php 文件的 Ajax 调用,实习生调用 Asana API 以在调用 API 服务之前获取验证代码和令牌。 我相信我收到了 CORS 警告,因此出现了 readystate=0 和 400 错误。但是,因为我的脚本的其余部分继续使用令牌,所以无论如何它都在插入记录。但是,令牌过期(3600 秒)后,现在我无法插入记录。我知道如果我直接调用 php 文件,它不会出现 CORS 错误。

$.ajax({
                    type: 'POST',
                    url: "oa/asana.php",
                    data: {apiprovider:"asana",type:"addnewproject",notes:"notes",name:"name",id:"id",resource:"projects"},
                    //dataType:"json",
                    //contentType: "application/json",
                    success: function(data) {

                            console.log(data);
                    },
                    error: function( error )
                            {
                              console.log("asana api error");
                              console.log(JSON.stringify(error)) ;
                    },
                    async:true
            });

我的 php 代码如下所示。

...$asana = new AsanaAuth(API_KEY,API_SECRET,callbackUrl);

    if (!isset($_GET['code'])) {
            $url = $asana->getAuthorizeUrl();
            header('Location:' . $url);
    } else {
            $asana->getAccessToken($_GET['code']);
             if ($asana->hasError()) {
                    echo 'Error response code: ' . $asana->responseCode;
            }
            else {
                    echo $asana->response;
            }
    }

在 Ajax 调用之外是否有更好的方法来执行此操作?

【问题讨论】:

    标签: php ajax asana-api


    【解决方案1】:

    好的,这就是我修复它的方法。部分原因是我的理解是错误的,我做出了错误的假设。

    这纯粹是基于我的应用程序的需要,这可能并不适用于所有人。

    我有一个设置页面,用户在其中单击 Asana 应用程序以授权连接。这不是 Ajax 调用,而是指向文件的超链接,这也是我的重定向 uri。在这个文件中,我检查用户是否已经授权,如果没有,我调用授权,获取令牌并将刷新令牌存储在数据库中以供将来使用。

    在我的应用程序的其他部分中,当用户单击创建体式项目时,我会检查访问令牌是否已过期,如果它已过期,我会刷新并再次获取另一个令牌。

    之前,我试图从一个页面调用它(在正常的用户流程中永远不会发生 - 在我的应用程序中)。所以现在没有 Ajax 调用进行授权,而是调用刷新令牌,并且 Asana API 端点是通过 Ajax 并且它们工作正常。

    希望这对将来的某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2011-03-16
      • 2021-07-10
      相关资源
      最近更新 更多