我正在尝试使用sendgrid V3 api将我们的用户添加到邮件列表中。我构建了以下Ajax请求来访问他们的API,但我不断收到bad request
错误。我省略了xhr.setRequestHeader
,但我确实有一个有效的API密钥并且它可以工作,因为当它被省略时,它会返回403.现在,我只是因为错误的请求体而得到400。我已经让我的请求正确看起来像他们的例子,我仍然卡住了。
var sendgridData =
[
{
"marketing_emails": 0,
"weekly_emails": 0,
"email": userProfile.email,
"first_name": "foo",
"last_name": 'bar',
"userid": 2,
}
]
$.ajax({
method: 'POST',
url: 'https://api.sendgrid.com/v3/contactdb/recipients',
data: sendgridData,
dataType: 'json',
contentType: 'application/json',
},
success:
function(res)
{
console.log(1, res)
Modal.close();
},
error:
function(e)
{
Modal.close();
console.log(1,e);
}
})
答案 0 :(得分:1)
更新了代码的工作示例和working jsfiddle:
var apiKey = 'Bearer [API KEY HERE]'
var sendgridData = [
{
"marketing_emails": 0,
"weekly_emails": 0,
"email": 'someperson@example.com',
"first_name": "foo",
"last_name": 'bar',
"userid": 2,
}
]
$.ajax({
method: 'POST',
url: 'https://api.sendgrid.com/v3/contactdb/recipients',
data: JSON.stringify(sendgridData),
dataType: 'json',
headers: { 'Authorization': apiKey },
crossDomain: true
})
.done(function(res) {
console.log(1, res)
})
.fail(function (e) {
console.log(2, e.status, e.responseText)
})
让我们来看看您正在制作的请求并从那里开始。您正在以Content-Type: application/json;
向API发送请求并发送一些数据。 API正在使用400 Bad Request
进行响应。 API返回400的原因是因为您正在发送服务器不喜欢或无法读取/解析的请求。
您的代码还有其他一些问题:
https://api.sendgrid.com/v3/contactdb/recipients