我有一个访问 Asana API 的 php 应用程序。我能够在 Asana 中创建一个项目。但是,对 API 类的 ajax 调用返回的是 readystate=0。
在 firebug 中进行故障排除时,我还注意到网络控制台有 302、400(??) 和 200 状态码。我认为 400 状态代码与无效请求或格式错误的 url 有关,但无论如何都会创建项目。
任何想法?
更新:更多信息。
我有一个对 php 文件的 Ajax 调用,该文件在调用 API 服务之前调用 Asana 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 调用之外有没有更好的方法来做到这一点?