当用户点击"添加用户"时,将在数据库中创建用户,但该表单将保留在此页面上。它没有像我期望的那样呈现下一页。此表单使用的addUser
句柄页面包含以下用于添加用户的部分。
<input id="addUser" type="submit" name="add" value="Add User" onclick="addRow()" />
addRow()
函数位于我的script.js文件中,包含以下代码。
function addRow(){
var form = document.getElementById("userForm");
var req = new XMLHttpRequest();
// Add the form data to the ajax request
var queryString = "";
var fname = form.fname.value;
var lname = form.lname.value;
var email = form.email.value;
var company = form.company.value;
var password = form.password.value;
queryString += "fname=" + fname + "&";
queryString += "lname=" + lname + "&";
queryString += "email=" + email + "&";
queryString += "company=" + company + "&";
queryString += "password=" + password;
//window.location.href = "/insert-user?" + queryString;
req.open('GET', '/insert-user?' + queryString, true);
//console.log('-->', result.response.status);
//req.setRequestHeader('Content-Type', 'application/json');
req.addEventListener('load', function(){
if (req.status >= 200 && req.status < 400){
}
else{
console.log("Error in network request: " + req.statusText);
}});
req.send();
event.preventDefault();
//return false;
}
为插入用户而执行的服务器端代码位于:
app.get('/insert-user',function(req,res){
var context = {};
pool.query("INSERT INTO user (`fname`, `lname`, `email`, `password`,`timestamp`,`company`) VALUES (?,?,?,?,NOW(),?)",
[req.body.fname, req.body.lname, req.body.email, req.body.password, req.body.company],
function(err, result){
if(err){
console.log(err);
next(err);
return;
}
res.render('adminDash',context);
console.log("Success");
});
});
我的调试声明&#34;成功&#34;打印,但我没有得到&#34; adminDash&#34;渲染。我检查了终端和控制台是否存在任何服务器错误,但它们不存在。这是有道理的,因为数据IS被插入到表中,但我无法弄清楚为什么adminDash
没有呈现。我猜它一定是客户端的东西(可能在addRow()中)?有没有人有任何解决此问题的技巧,以便我可以进一步隔离问题?
答案 0 :(得分:0)
您似乎没有对XMLHttpRequest
的回复做任何事情。
我不会说谎:我不知道这样做的“正确”方法,因为我自己只是在学习节点/把手,但这样可行:
if (req.status >= 200 && req.status < 400){
document.write(req.response); // write the response to the page
}
对adminDash
文件一无所知,我无法告诉您,在渲染调用中传递的context
对象是否显然是空的。