【发布时间】:2016-06-04 14:05:57
【问题描述】:
我正在尝试使用以下代码通过 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' }
这绝对是我想要的。如何从上面荒谬的字符串中提取它或更改我的发布请求,以便我得到更易于管理的东西。
应该注意后端是在节点上表达的。
谢谢!
【问题讨论】: