我正为自己写一个报价系统。
我有这个引用的网页,它有: a)使用引用的项目向客户发送电子邮件(完成) b)在谷歌电子表格中创建一条记录(完成) c)在体式(失败)中创建任务
在过去的两天里,我一直在冲浪和阅读所有我能找到的东西,但是解决方案从我的脑海里跳过,所以我问你们的问题。
这是 CURL 代码,可以正常使用:
curl -H "Authorization: Bearer 0/7alotofnumbers" \
https://app.asana.com/api/1.0/tasks \
-d "projects=83694179XXXXXX" \
-d "tags[0]=269280227XXXXXX" \
-d "assignee=sales@atmysite.com.mx" \
-d "due_on=2017-02-09" \
-d "name=testing with curl" \
-d "notes=it works just as expected" \
-d "followers[0]=myself@atmysite.com.mx"
现在,我将WORKS的CURL命令转换为asanataskcreate.coffee:
$.ajax
url: 'https://app.asana.com/api/1.0/tasks'
beforeSend: (xhr) ->
xhr.setRequestHeader 'Authorization', 'Bearer 0/7alotofnumbers'
return
contentType: 'application/json'
method: 'get'
data:
projects: [ 83694179XXXXXX ]
tags: [ 269280227XXXXXX ]
assignee: 'sales@atmysite.com.mx'
due_on: '2017-02-09'
name: 'testing with js ajax'
notes: 'it does not work'
followers: [ 'myself@atmysite.com.mx' ]
转入asanataskcreate.js:
$.ajax({
url: 'https://app.asana.com/api/1.0/tasks',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer 0/7alotofnumbers');
},
contentType: 'application/json',
method: 'get',
data: {
projects: [83694179XXXXXX],
tags: [269280227XXXXXX],
assignee: 'sales@atmysite.com.mx',
due_on: '2017-02-28',
name: 'testing with js ajax',
notes: 'it does not work',
followers: ['myself@atmysite.com.mx']
}
});
并且, 失败 :(
好的,我试过了:
a)方法:'post'和'get'
b)放置,删除proyects,标签和关注者的'[]'
在“控制台”中的Chrome devtools的帮助下,我收到以下消息:
Failed to load resource: the server responded with a status of 400 (Bad Request)
和
XMLHttpRequest cannot load https://app.asana.com/api/1.0/tasks?projects%5B%5D=836941797XXXXXX&tags%5B%5…¬es=it+does+not+work&followers%5B%5D=myself%40atmysite.com.mx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://atmysite.com.mx' is therefore not allowed access. The response had HTTP status code 400.
现在,在DevTools中,当检查来自体式的XHR响应时,这就是我得到的:
message: "You should specify one of workspace, project, tag, section"
正如您可以从代码中看到的那样,定义了一个项目ID,但是在JS中失败并且在curl中工作。
分析curl工作和ajax中'项目'的原因失败,区别在于:
curl: projects=83694179XXXXXX
js ajax: projects%5B%5D=836941797XXXXXX ==> projects[]=836941797XXXXXX
任何人都知道我做错了什么。
提前,谢谢您的时间和帮助
答案 0 :(得分:1)
以下是创建Asana任务的Ajax请求示例:
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + "0/0123...");
},
url: "https://app.asana.com/api/1.0/tasks",
method: 'POST',
data: {projects:123456789, name: "ajax created task"},
});
您不确定编译的Ajax代码有多少是错误的。您肯定需要使用POST
请求来创建新任务。数据值不应该在数组中。您可能不需要列出contentType
,因为默认设置将起作用。您应该能够根据我的示例使您的代码处于正常工作状态。
您还应该知道,通过使用Ajax,您将在客户端中公开您的个人访问令牌。如果您在帐户中发现任何可疑内容,则可能需要删除该PAT。