我正在尝试使用以下代码通过XMLHttpRequest将数据发布到表单:
function submitForm(event) {
event.preventDefault();
var data = new FormData(form);
var request = new XMLHttpRequest();
request.onreadystatechange = function(e) {
var formattedEmails = Object.keys(request.responseText);
formattedEmails.forEach(function(email) {
messages.addMessage(email.to, email.subject, email.message);
});
};
request.open(form.method, form.action);
request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
request.send(data);
}
当我这样做时,数据会像这样进入
{ '------WebKitFormBoundarywGy70eJqwXdEVot5\r\nContent-Disposition: form-data; name':'"emails"\r\n\r\n Ben,Hernandez,b****@gmail.com\r\n Ann,M*****,a****@gmail.com\r\n \r\n------WebKitFormBoundarywGy70eJqwXdEVot5\r\nContent-Disposition: form-data; name="subject"\r\n\r\nhi {first}!\r\n------WebKitFormBoundarywGy70eJqwXdEVot5\r\nContent-Disposition: form-data; name="message"\r\n\r\nHello {first} {last} {email}\r\n------WebKitFormBoundarywGy70eJqwXdEVot5\r\nContent-Disposition: form-data; name="submit"\r\n\r\nPreview\r\n------WebKitFormBoundarywGy70eJqwXdEVot5--\r\n' }
这似乎是一个非常长的数据串,我需要以某种方式格式化?当我删除上面的代码并允许表单只是像form.action页面那样定期提交。我得到了回复:
{ emails: 'Ben,Hernandez,b****@gmail.com\r\nAnn,M****,a***@gmail.com\r\n',
subject: 'hi {first}!',
message: 'Hello {first} {last} {email}',
submit: 'Preview' }
这绝对是我想要的。如何从上面的荒谬字符串中提取它或更改我的发布请求,以便我得到更易于管理的内容。
应注意后端在节点上表达。
谢谢!
答案 0 :(得分:0)
我最终放弃了
Car
然后手动将我的params字符串放在一起。如果有人知道如何做到这一点,我仍然对答案感兴趣。