fix(version_control): 修复版本删除功能并改进错误处理
- 设置纯文本响应头避免HTML污染 - 统一使用$message变量存储操作结果 - 改进AJAX请求处理,添加请求标识 - 清理响应数据并优化成功/失败提示 - 添加错误日志记录
This commit is contained in:
BIN
APP Store.zip
BIN
APP Store.zip
Binary file not shown.
@@ -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(
|
||||||
'操作失败',
|
'操作失败',
|
||||||
'版本删除失败,请稍后再试',
|
'版本删除失败,请稍后再试',
|
||||||
|
|||||||
Reference in New Issue
Block a user