修复二维码生成器问题

This commit is contained in:
2026-04-02 01:44:27 +08:00
parent b6f0d040ca
commit f16e1d625a
2 changed files with 23 additions and 7 deletions

View File

@@ -27,11 +27,25 @@ async function apiRequest(endpoint, options = {}) {
const baseUrl = window.API_BASE || '/api/v1'; const baseUrl = window.API_BASE || '/api/v1';
const url = endpoint.startsWith('http') ? endpoint : `${baseUrl}${endpoint}`; const url = endpoint.startsWith('http') ? endpoint : `${baseUrl}${endpoint}`;
// 默认 headers
const headers = { const headers = {
'Content-Type': 'application/json',
...options.headers ...options.headers
}; };
// 如果没有设置 Content-Type 且 body 是 URLSearchParams不自动添加
if (!options.headers || !options.headers['Content-Type']) {
if (options.body && options.body instanceof URLSearchParams) {
// 表单数据,不添加 JSON Content-Type
headers['Content-Type'] = 'application/x-www-form-urlencoded';
} else if (options.body && typeof options.body === 'string') {
// 已经是字符串,不添加
} else if (options.body && typeof options.body === 'object') {
// JSON 对象
headers['Content-Type'] = 'application/json';
options.body = JSON.stringify(options.body);
}
}
const token = getToken(); const token = getToken();
if (token) { if (token) {
headers['Authorization'] = `Bearer ${token}`; headers['Authorization'] = `Bearer ${token}`;
@@ -51,7 +65,7 @@ async function apiRequest(endpoint, options = {}) {
return null; return null;
} }
// 获取响应文本,用于调试 // 获取响应文本
const text = await response.text(); const text = await response.text();
if (!response.ok) { if (!response.ok) {
@@ -65,7 +79,11 @@ async function apiRequest(endpoint, options = {}) {
throw new Error(errorMsg); throw new Error(errorMsg);
} }
return JSON.parse(text); try {
return JSON.parse(text);
} catch (e) {
return text;
}
} catch (error) { } catch (error) {
console.error('API 请求错误:', error); console.error('API 请求错误:', error);
throw error; throw error;

View File

@@ -50,16 +50,14 @@ async function generateQR() {
const size = parseInt(document.getElementById('size').value); const size = parseInt(document.getElementById('size').value);
try { try {
// 使用 URLSearchParams 发送表单数据
const formData = new URLSearchParams(); const formData = new URLSearchParams();
formData.append('content', content); formData.append('content', content);
formData.append('size', size); formData.append('size', size);
const data = await apiRequest('/qrcode/generate', { const data = await apiRequest('/qrcode/generate', {
method: 'POST', method: 'POST',
headers: { body: formData // 不需要设置 headersapiRequest 会自动处理
'Content-Type': 'application/x-www-form-urlencoded'
},
body: formData
}); });
currentQRCode = data.qr_code; currentQRCode = data.qr_code;