我在前端有一个按钮,允许用户更新他们的个人资料照片(使用Cloudinary API),我基本上调用了我的nodejs post请求并传递了用户数据,以便它可以查询数据库并更新个人资料照片的URL。这个功能很好,但是在调用该函数后它没有重定向/渲染页面。
这是我的前端代码(包含 Cloudinary 和 js):
<input type="hidden" name="" id="employee_num" value="<%= data[i].EMPLOYEE_NUM %>">
<script src="https://widget.cloudinary.com/v2.0/global/all.js" type="text/javascript"></script>
<script type="text/javascript">
var myWidget = cloudinary.createUploadWidget({
cloudName: 'xxx',
uploadPreset: 'xxx'}, (error, result) => {
if (!error && result && result.event === "success") {
console.log('Done! Here is the image info: ', result.info);
console.log(result.info.secure_url)
var result_url = result.info.secure_url;
console.log("result url is " + result_url)
document.getElementById("url").value = result_url;
var employee_num = document.getElementById('employee_num').value;
fetch('/changeProfileImage', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
result_url,
employee_num
})
})
}
}
)
document.getElementById("upload_widget").addEventListener("click", function(){
myWidget.open();
}, false);
</script>
现在下面是我用于发出POST请求/changeProfileImage
的Node.js函数
app.post('/changeProfileImage', (req, res) => {
if (req.session.loggedin) {
var employee_num = req.body.employee_num;
var url = req.body.result_url;
console.log("e " + employee_num)
console.log("u " + url)
var changeProfileImage = "update EMPLOYEES set (PROFILE_IMAGE)= '" + url + "' where EMPLOYEE_NUM = '" + employee_num + "'";
ibmdb.open(ibmdbconnMaster, function (err, conn) {
if (err) return console.log(err);
conn.query(changeProfileImage, function (err, rows) {
if (err) {
console.log(err);
}
res.redirect('/account');
conn.close(function () {
});
})
})
} else {
res.render('login.ejs')
}
})
抱歉代码有点乱,但上面的代码是必要的。基本上在我的控制台显示它更新了一切,并且成功地执行了,这是真的,但是它从来没有刷新。有任何想法吗?