【发布时间】:2020-04-01 09:59:33
【问题描述】:
使用 nodejs、xmlhttprequest 获取简单的表单发布数据。
使用 formdata() 构造函数从 html 中获取值。但是在
expressjs,请求正文未正确获取。它抛出了
以下错误。通过
发布数据会有什么问题 下面的代码。
HTML:
> <form id='loginForm'>
> <div>
> <label>Username:</label>
> <input type="text" name="title" />
> <br/>
> </div>
> <div>
> <label>Password:</label>
> <input type="password" name="descr" />
> </div>
> <div>
> <input type="submit" value="Submit" />
> </div>
> </form>
脚本:
window.onload = function () {
var testForm = document.getElementById('loginForm');
testForm.onsubmit = function(event) {
event.preventDefault();
const XHR = new XMLHttpRequest();
var formData = new FormData(testForm);
XHR.open( "POST", "http://localhost:5000/addCat", true);
XHR.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
XHR.send(formData);
}
}
但在 expressjs 调用:
const addCategories = (request, response) => {
const { title, descr } = request.body
console.log(request.body);
// output: { '------WebKitFormBoundaryxBFmvN6Sw8QT3BA7\r\nContent-Disposition: form-data; name': '"title"\r\n\r\nsdsf\r\n------WebKitFormBoundaryxBFmvN6Sw8QT3BA7\r\nContent-Disposition: form-data; name="descr"\r\n\r\nsdfdsfds\r\n------WebKitFormBoundaryxBFmvN6Sw8QT3BA7\r\nContent-Disposition: form-data; name="title"\r\n\r\nnewtitle\r\n------WebKitFormBoundaryxBFmvN6Sw8QT3BA7\r\nContent-Disposition: form-data; name="descr"\r\n\r\ngoind descriptions\r\n------WebKitFormBoundaryxBFmvN6Sw8QT3BA7--\r\n' }
client.query('INSERT INTO categoryLists (title, descr) VALUES ($1, $2)', [title, descr], (error, results) => {
if (error) {
throw error
}
response.status(201).send(`User added with ID: ${results.insertId}`)
})
};
出现错误: 错误:“标题”列中的空值违反非空约束
【问题讨论】:
标签: javascript node.js forms express xmlhttprequest