我目前有一个jQuery脚本,将ajax发送到http://formspree.io(静态表单提交)。他们的文档说要这样做:

$.ajax({
  url: "//formspree.io/[email protected]",
  method: "POST",
  data: {message: "hello!"},
  dataType: "json"
});


在我自己的jQuery脚本中-我也可以使用它:

jQuery.ajax({
  type: "POST",
  url: "http://formspree.io/[email protected]",
  data: 'name=' + name + '&_replyto=' + email + '&message=' + message;,
  dataType: "json",
 });


但是,我在Angular中实现此目标的努力失败了-Formspree声称我正在提交空白表格。

$http({
  url: "http://formspree.io/[email protected]",
  data: {
    email: email,
    message: message
  },
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }

$http({
  url: "http://formspree.io/[email protected]",
  data: 'email=...&message=...',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }


我能够做到这一点:

data: 'first=hgf&last=ghfgh',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},


但是,这会使FormSpree认为我不是我的非ajax,并尝试加载感谢页面。我不清楚这是否是原因。我得到了表格,但它在“谢谢”页面上引发了错误。

有想法吗?

最佳答案

您应该以表单编码格式发送数据:

$http({
    url: "http://formspree.io/[email protected]",
    data: $.param({
        email: email,
        message: message
    }),
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded'
    }
});

10-02 20:06