我试图对azure函数进行ajax调用,该函数将数据保存到azure门户上的cosmos db。
不起作用:
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);
});
Works:
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);
});
这是我的蔚蓝功能代码:
module.exports =异步函数(上下文,要求){
// 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在查询字符串中发送参数并以表单数据形式发布时,有人可以让我知道如何通过ajax调用将具有参数的发布后调用发送给azure函数。前进!</ p>
答案 0 :(得分:2)
Ajax将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);
}
});