Пост-вызов функции Azure, приводящий к 400 ошибочным запросам с вызовом ajax, и та же функция работает, когда POST изменяется на GET - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь сделать ajax-вызов функции azure, которая сохраняет данные в dos cosmos на лазурных порталах.

Не работает:

var dataArray = {
    task:"abcd",
    name:"efg",
    dDoB:"20/12/2018",
    dCountry:"America"
  };

    $.post('https://functionget.azurewebsites.net/api/***/code**', dataArray ,
    function(data,status) {
      alert("Data: " + data + "\nStatus: " + status);

  });

Работает:

var dataArray = {
    task:"abcd",
    name:"efg",
    dDoB:"20/12/2018",
    dCountry:"America"
  };

    $.get('https://functionget.azurewebsites.net/api/***/code**', dataArray ,
    function(data,status) {
      alert("Data: " + data + "\nStatus: " + status);

  });

Вот мой код функции Azure:

module.exports = асинхронная функция (context, req) {

// We need both name and task parameters.
if (req.query.name && req.query.task) {

    // Set the output binding data from the query object.
    context.bindings.taskDocument = req.query;

    // Success.
    context.res = {
        status: 200
    };
}
else {
    context.res = {
        status: 400,
        body: "The query options 'name' and 'task' are required"
    };
}

};

, когда мы смотримдля сети в консоли для обоих запросов, то GET отправляет параметры в строке запроса и публикует данные в форме. Может кто-нибудь, пожалуйста, дайте мне знать, как отправить пост-вызов с параметрами в функцию Azure через вызов ajax. Заранее спасибо!

1 Ответ

0 голосов
/ 27 декабря 2018

Ajax post dataArray как данные формы, а не строка запроса, поэтому с req.query.xx мы не можем получить данные, как ожидалось.Мы можем опубликовать Json и прочитать req.body.Проверьте код ниже.

Для функции измените query на body.

if (req.body.name && req.body.task) {

    context.bindings.taskDocument = req.body;
    ...
}

Для ajax используйте $.ajax вместо $.post для отправки Json.

$.ajax({
  type: "POST",
  url: "<functionurl>",
  data: JSON.stringify(dataArray),
  contentType: "application/json; charset=utf-8",
  success: function(data,status) {
    alert("Data: " + data + "\nStatus: " + status);
  }
});
...