fix(version_control): 修复版本删除功能并改进错误处理

- 设置纯文本响应头避免HTML污染
- 统一使用$message变量存储操作结果
- 改进AJAX请求处理,添加请求标识
- 清理响应数据并优化成功/失败提示
- 添加错误日志记录
This commit is contained in:
2025-09-23 17:54:08 +08:00
parent 378319117c
commit 0f5f10e01a
2 changed files with 43 additions and 18 deletions

Binary file not shown.

View File

@@ -190,14 +190,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['version_id'])) {
// 处理版本删除请求 // 处理版本删除请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_version'])) { if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_version'])) {
// 设置内容类型为纯文本
header('Content-Type: text/plain');
$versionId = $_POST['version_id']; $versionId = $_POST['version_id'];
// 初始化消息变量
$message = '';
// 获取文件路径 // 获取文件路径
$getFilePathSql = "SELECT file_path FROM app_versions WHERE id = ?"; $getFilePathSql = "SELECT file_path FROM app_versions WHERE id = ?";
$getFileStmt = $conn->prepare($getFilePathSql); $getFileStmt = $conn->prepare($getFilePathSql);
if (!$getFileStmt) { if (!$getFileStmt) {
log_error("获取文件路径查询准备失败: " . $conn->error, __FILE__, __LINE__); log_error("获取文件路径查询准备失败: " . $conn->error, __FILE__, __LINE__);
$error = '版本删除失败,请稍后再试'; $message = '版本删除失败,请稍后再试';
} else { } else {
$getFileStmt->bind_param("i", $versionId); $getFileStmt->bind_param("i", $versionId);
$getFileStmt->execute(); $getFileStmt->execute();
@@ -210,7 +216,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_version'])) {
if (file_exists($filePath)) { if (file_exists($filePath)) {
if (!unlink($filePath)) { if (!unlink($filePath)) {
log_error("文件删除失败: " . $filePath, __FILE__, __LINE__); log_error("文件删除失败: " . $filePath, __FILE__, __LINE__);
$error = '版本删除失败,请稍后再试'; $message = '版本删除失败,请稍后再试';
} }
} }
} }
@@ -221,21 +227,20 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_version'])) {
$deleteVersionStmt = $conn->prepare($deleteVersionSql); $deleteVersionStmt = $conn->prepare($deleteVersionSql);
if (!$deleteVersionStmt) { if (!$deleteVersionStmt) {
log_error("版本删除查询准备失败: " . $conn->error, __FILE__, __LINE__); log_error("版本删除查询准备失败: " . $conn->error, __FILE__, __LINE__);
$error = '版本删除失败,请稍后再试'; $message = '版本删除失败,请稍后再试';
} else { } else {
$deleteVersionStmt->bind_param("i", $versionId); $deleteVersionStmt->bind_param("i", $versionId);
if ($deleteVersionStmt->execute()) { if ($deleteVersionStmt->execute()) {
$success = '版本删除成功'; $message = '版本删除成功';
} else { } else {
$error = '版本删除失败: ' . $conn->error; $message = '版本删除失败: ' . $conn->error;
} }
} }
if (!empty($success)) { // 只输出消息不包含任何HTML
echo $success; echo $message;
} else {
echo $error; // 确保脚本终止,不执行后续代码
}
exit; exit;
} }
@@ -457,19 +462,39 @@ if (!$verStmt) {
formData.append('delete_version', 'true'); formData.append('delete_version', 'true');
formData.append('version_id', versionId); formData.append('version_id', versionId);
fetch('version_control.php', { method: 'POST', body: formData }) fetch('version_control.php', {
method: 'POST',
body: formData,
headers: {
'X-Requested-With': 'XMLHttpRequest' // 添加AJAX请求标识
}
})
.then(response => response.text()) .then(response => response.text())
.then(data => { .then(data => {
// 清理返回的文本去除任何可能的HTML标签或额外空格
const cleanMessage = data.trim();
// 显示操作结果 // 显示操作结果
Swal.fire({ if (cleanMessage.includes('成功')) {
title: '操作成功', Swal.fire({
text: data, title: '操作成功',
icon: 'success' text: '版本已成功删除',
}).then(() => { icon: 'success'
window.location.reload(); }).then(() => {
}); window.location.reload();
});
} else {
Swal.fire(
'操作失败',
cleanMessage || '版本删除失败,请稍后再试',
'error'
).then(() => {
window.location.reload();
});
}
}) })
.catch(error => { .catch(error => {
console.error('删除请求错误:', error);
Swal.fire( Swal.fire(
'操作失败', '操作失败',
'版本删除失败,请稍后再试', '版本删除失败,请稍后再试',