From 1587b5dffda9c7caae66b07f60c1570a78bdc4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 5 Jan 2026 14:35:19 +0300 Subject: [PATCH] fix: handle non-JSON error responses in requestCrudHandler --- .../js/components/requestCrudHandler.js | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/backend/static/js/components/requestCrudHandler.js b/backend/static/js/components/requestCrudHandler.js index edaed1fb..717dfda2 100644 --- a/backend/static/js/components/requestCrudHandler.js +++ b/backend/static/js/components/requestCrudHandler.js @@ -135,21 +135,30 @@ export function initRequestCrudHandler(options) { }); if (!response.ok) { - const error = await response.json(); - console.error("[requestCrudHandler] Validation error:", error); - - // Показываем детали ошибки let errorMessage = "Не удалось создать заявление:\n"; - if (error.detail) { - errorMessage += error.detail; - } else if (typeof error === "object") { - // Форматируем ошибки валидации - for (const [field, messages] of Object.entries(error)) { - const fieldMessages = Array.isArray(messages) - ? messages.join(", ") - : messages; - errorMessage += `\n${field}: ${fieldMessages}`; + + // Пытаемся получить JSON, но если не получается - читаем как текст + const contentType = response.headers.get("content-type"); + if (contentType && contentType.includes("application/json")) { + const error = await response.json(); + console.error("[requestCrudHandler] Validation error:", error); + + if (error.detail) { + errorMessage += error.detail; + } else if (typeof error === "object") { + // Форматируем ошибки валидации + for (const [field, messages] of Object.entries(error)) { + const fieldMessages = Array.isArray(messages) + ? messages.join(", ") + : messages; + errorMessage += `\n${field}: ${fieldMessages}`; + } } + } else { + // Сервер вернул не JSON (возможно HTML страницу ошибки) + const text = await response.text(); + console.error("[requestCrudHandler] Server error (non-JSON):", response.status, text.substring(0, 500)); + errorMessage += `Ошибка сервера (${response.status})`; } throw new Error(errorMessage);