gpt4 book ai didi

javascript - 使用 JS(失败)和 CURL(工作)在 Asana 中创建任务

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:38 25 4
gpt4 key购买 nike

我正在为自己编写一个报价系统。

我有这个报价网页,它的作用是:
a) 向客户发送一封包含报价项目的电子邮件(完成)
b) 在 Google 电子表格中创建一条记录(完成)
c) 在 asana 中创建一个任务(失败)

在过去的两天里,我一直在网上冲浪并阅读我能找到的所有内容,但解决方案却从我的脑海中消失了。

这是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"

现在,我将可用的 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)地点,删除项目、标签和关注者处的“[]”

在“控制台”中 Chrome 开发工具的帮助下,我收到以下消息:

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…&notes=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 中,检查 asana 的 XHR 响应时,我得到的是:

message: "You should specify one of workspace, project, tag, section"

从代码中可以看到,定义了一个项目id,但是在JS中失败,在curl中有效。

分析为什么'projects'在curl中有效而在ajax中失败,区别在于:

curl: projects=83694179XXXXXX
js ajax: projects%5B%5D=836941797XXXXXX ==> projects[]=836941797XXXXXX

我做错了什么?

最佳答案

以下是创建 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,您会在客户端中公开您的个人访问 token 。如果您发现帐户中有任何可疑内容,您可能需要删除该 PAT。

关于javascript - 使用 JS(失败)和 CURL(工作)在 Asana 中创建任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com