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

View File

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