Создание задачи в Asana с помощью JS (сбой) и CURL (работа)

Я пишу систему цитат для себя.

У меня есть эта веб-страница для цитат, которая: а) отправляет электронное письмо клиенту (готово) с указанными пунктами б) создает запись в электронной таблице Google (готово) в) создает задачу в асане (не удается)

В течение последних 2 дней я занимался серфингом и читал все, что смог найти, но решение скинулось с моей головы, поэтому я прошу 4 часа asistnace.

Это код 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']
  }
});

И, НЕДОСТАТКИ:(

Хорошо, я попробовал:
а) метод: "пост" и "получить"
б) разместите, удалите '[]' в проектах, тегах и подписчиках

С помощью 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…&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, при проверке ответа XHR от асаны, это то, что я получаю:

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

Как вы можете видеть из кода, определен идентификатор проекта, но в JS происходит сбой и в curl работает.

Анализируя, почему "проекты" в curl работают и в ajax не работают, разница заключается в следующем:

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

Любой имеет представление о том, что я делаю неправильно.

Заранее спасибо за ваше время и помощь

1 ответ

Вот пример запроса Ajax, который создает задачу Asana:

$.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.

Другие вопросы по тегам