【问题标题】:POST JsonArray using Ajax使用 Ajax 发布 JsonArray
【发布时间】:2017-04-06 16:34:49
【问题描述】:

我有一个 JSON 数组,我正在尝试使用 Ajax 将其发布到 SENDGRID。使用 Postman,我可以毫无问题地发布,但是当我在 .js 文件中发布数据时,我不断收到错误消息(错误请求 = 缺少参数)。

感谢任何帮助。

注意:这些值实际上是有效的。为了安全起见,我删除了识别信息。

铬负载:

AJAX 调用:

var mailUrl = "https://api.sendgrid.com/v3/mail/send";
var postdata = '{"personalizations": [{"to":[{"to email"}],"from": {"email":"from email"},"subject":"Hello, World!" , "content" : [{ "type":"text/plain" , "value":"TestMessage!" }]}]}'
$.ajax({
    type: 'POST',
    headers: {Authorization: "Bearer APIKEY"},
    url: mailUrl,
    contentType: "application/json",
    data: JSON.stringify(postdata),
    success: function (res) {
         alert('ok');
    },
    error: function (res) {
         alert('problems');
    }
});

【问题讨论】:

    标签: javascript jquery ajax post sendgrid


    【解决方案1】:

    问题似乎出在json[{"to":[{"to email"}]的这一部分。您可以使用jsonlint来验证json。此外,JSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串。

    但在您的情况下,postdata 已经是一个字符串。

    【讨论】:

    • 我解决了自己的问题(无法关闭问题),但这非常接近,所以我会选择你。
    【解决方案2】:

    存储在变量中的字符串是有效的 JSON。在 JSON 上调用 JSON.stringify() 将转义所有特殊字符,例如 ",并且转义的字符串不会反序列化为您想要的对象。

    虽然根据某些规范,字符串仍然是有效的 JSON,但 application/json 的规范在 RFC4627 中规定

    对象结构表示为一对花括号 围绕零个或多个名称/值对(或成员)。

    使返回的字符串对 post 无效。

    发送字符串本身而不再次序列化它可能会起作用。

    【讨论】:

    • 即使这样做我仍然被拒绝。
    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2014-02-11
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多