From 40b6017a7b8e8f032e30f26ab9de7a9892f15257 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 17 Jul 2026 16:27:43 +0800 Subject: [PATCH] fix(forum): hard-fail delete-draft AJAX when server returns HTML admin-ajax 500 HTML recovery page made r.json() throw; parse text safely and surface a clear alert for deploy lag. --- assets/js/forum-governance.js | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/assets/js/forum-governance.js b/assets/js/forum-governance.js index 12b43db7..239161e4 100644 --- a/assets/js/forum-governance.js +++ b/assets/js/forum-governance.js @@ -1115,12 +1115,38 @@ data.append('draft_id', draftId); fetch(ajaxUrl, { method: 'POST', body: data, credentials: 'same-origin' }) - .then(function (r) { return r.json(); }) - .then(function (payload) { - if (payload.success) { + .then(function (r) { + return r.text().then(function (text) { + var payload = null; + try { + payload = text ? JSON.parse(text) : null; + } catch (e) { + payload = null; + } + return { ok: r.ok, status: r.status, payload: payload, raw: text }; + }); + }) + .then(function (res) { + if (res.payload && res.payload.success) { var item = btn.closest('.aksrt-forum-compose__draft-item'); if (item) item.remove(); + return; } + var msg = (res.payload && res.payload.data && res.payload.data.message) + || (res.payload && res.payload.message) + || (res.status === 500 + ? '服务器错误:请确认主题已更新到最新 main(Forum.php 草稿 autoload 修复)' + : '删除失败'); + if (window.console && console.warn) { + console.warn('[aksrt] delete draft failed', res.status, msg); + } + window.alert(msg); + }) + .catch(function (err) { + if (window.console && console.warn) { + console.warn('[aksrt] delete draft network error', err); + } + window.alert('删除失败,请稍后重试'); }); }); });