我正在尝试建立一个web应用程序,该应用程序管理带有员工目录的工作数据库,我在添加一个功能时遇到了麻烦,用户可以通过复选框选择多行,然后用“删除全部”按钮删除它们。
按下按钮时,它将返回消息框中选择的正确行数,确认后将返回后端中定义的204行,但不会发生任何情况,所选作业将保留在数据库中:
@jobs.route("/jobs/delete", methods=['POST'])
@login_required
def delete_jobs():
try:
jobs = request.get_json(force=True)['job_ids']
for job_id in jobs:
job = Job.query.get(job_id)
if job and job.author == current_user:
db.session.delete(job)
db.session.commit()
flash('Job(s) deleted successfully', 'danger')
return ('', 204)
except Exception as e:
db.session.rollback()
return ('An error occurred: {}'.format(e), 500)
这里是前端的JS代码:
// Delete checked boxes
document.getElementById("deleteAll").addEventListener("click", function() {
if (rowCheckboxes.length === 0) {
alert("Please select at least one job to delete.");
return;
}
checkedIds = [];
for (const checkbox of rowCheckboxes) {
if (checkbox.checked) {
checkedIds.push(checkbox.value);
}
}
if (checkedIds.length === 0) {
alert("Please select at least one job to delete.");
return;
}
if (confirm(`Are you sure you want to delete ${checkedIds.length} job(s)?`)) {
fetch('/jobs/delete', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ job_ids: checkedIds })
})
.then(function(response) {
if (response.status === 204) {
// remove the deleted job from the UI
} else {
alert("Failed to delete job.");
}
})
.catch(function(error) {
console.error("Error deleting job:", error);
alert("Failed to delete job.");
});
}
});
});
我试图删除if语句:
if job and job.author == current_user:
并在查询后直接删除,但这不起作用。
如果能提供帮助,将不胜感激,谢谢!