我正在尝试将Airtable用作项目中提交表单的后端。但是,我似乎无法集成API,也不知道问题所在。我正在使用React和axios。
我对JS和Airtable都是新手。
以下是我的错误代码:
提交表单后浏览器出现错误:
空中错误:{“错误”:{“类型”:“ INVALID_REQUEST_MISSING_FIELDS”,“消息”:“在请求正文中找不到字段“ fields””}}
有人可以请我做错了吗?提前非常感谢!
下面是我的代码:
var form = document.querySelector("#bize-ulasin");
if(form) {
form.addEventListener("submit", function(event) {
event.preventDefault();
axios.post(airtable_write_endpoint,
{
"Content-Type": "application/json"
} ,
{
"fields": {
"AdSoyad": document.getElementById("#Ad-Soyad"),
"Email": document.getElementById("#Email"),
"Telefon": document.getElementById("#Telefon"),
"Konu": document.getElementById("#Konu"),
"Mesaj": document.getElementById("#Mesaj"),
"Ortam": "Websitesi"
}
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
})
})
};
答案 0 :(得分:0)
这似乎与您构造axios调用的方式有关。看来您实际上是将{"Content-Type": "application/json"}
作为POST调用中的有效负载而不是第二个参数传递。您应该可以通过re-ordering the parameters in your call进行修复:
axios.post(airtable_write_endpoint,
{
"fields": {
"AdSoyad": document.getElementById("#Ad-Soyad"),
"Email": document.getElementById("#Email"),
"Telefon": document.getElementById("#Telefon"),
"Konu": document.getElementById("#Konu"),
"Mesaj": document.getElementById("#Mesaj"),
"Ortam": "Websitesi"
},
}
{
headers: { "Content-Type": "application/json"}
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
})
})
希望有帮助!
答案 1 :(得分:0)
Airtable有一个JavaScript package,可让您以编程方式访问任何Airtable工作表中的任何基础。 Airtable还会为您的基地生成完整的API文档。您可以在以下位置找到您的API:https://airtable.com/api
选择一个基础,您将看到具有示例调用和所有功能的完整API。
它显示了完整的JavaScript示例:
EXAMPLE USING ENVIRONMENT VARIABLE
# Shell:
$ export AIRTABLE_API_KEY=YOUR_API_KEY
# Node:
const base = require('airtable').base('YOUR_AIRTABLE_BASE');
EXAMPLE USING CUSTOM CONFIGURATION
var Airtable = require('airtable');
Airtable.configure({
endpointUrl: 'https://api.airtable.com',
apiKey: 'YOUR_API_KEY'
});
var base = Airtable.base('YOUR_AIRTABLE_BASE');
答案 2 :(得分:-1)
"AdSoyad": document.getElementById("idname")
选择相关的html元素,无值
您可以使用"AdSoyad": document.getElementById("Ad-Soyad").value
来解决,而无需使用id标记(#
),您已经编写了getElementById
,不需要#