我目前有一个jQuery脚本,它将ajax发送到http://formspree.io(静态表单提交)。他们的文档说这样做:
$.ajax({
url: "//formspree.io/you@email.com",
method: "POST",
data: {message: "hello!"},
dataType: "json"
});
在我自己的jQuery脚本中 - 我有这个也有效:
jQuery.ajax({
type: "POST",
url: "http://formspree.io/email@example.org",
data: 'name=' + name + '&_replyto=' + email + '&message=' + message;,
dataType: "json",
});
然而,我在Angular中实现这一目标的努力失败了 - formstree声称我提交了一份空表格。
$http({
url: "http://formspree.io/email@example.org",
data: {
email: email,
message: message
},
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
$http({
url: "http://formspree.io/email@example.org",
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我想并试图加载一个感谢页面。我不清楚这是否是理由。我得到了表单,但是它引发了感谢页面的错误。
想法?
答案 0 :(得分:2)
您应该以form-urlencoded格式发送数据:
$http({
url: "http://formspree.io/email@example.org",
data: $.param({
email: email,
message: message
}),
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
}
});