我正在尝试建立一个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:
并在查询后直接删除,但这不起作用。
如果能提供帮助,将不胜感激,谢谢!