Debug: paranna virhekäsittelyä todo_status + apiCall JSON parse
apiCall palauttaa nyt selkeän virheen jos palvelimen vastaus ei ole validia JSON:ia (+ logittaa console.error). todo_status palauttaa JSON-virheen myös edge-caseissa. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
6
api.php
6
api.php
@@ -2289,8 +2289,10 @@ switch ($action) {
|
|||||||
case 'todo_status':
|
case 'todo_status':
|
||||||
requireAuth();
|
requireAuth();
|
||||||
$companyId = requireCompany();
|
$companyId = requireCompany();
|
||||||
if ($method !== 'POST') break;
|
if ($method !== 'POST') { echo json_encode(['error' => 'POST required']); break; }
|
||||||
$input = json_decode(file_get_contents('php://input'), true);
|
$rawInput = file_get_contents('php://input');
|
||||||
|
$input = json_decode($rawInput, true);
|
||||||
|
if (!$input) { echo json_encode(['error' => 'Invalid JSON input', 'raw' => substr($rawInput, 0, 200)]); break; }
|
||||||
$id = $input['id'] ?? '';
|
$id = $input['id'] ?? '';
|
||||||
$status = $input['status'] ?? '';
|
$status = $input['status'] ?? '';
|
||||||
$todo = dbLoadTodo($id);
|
$todo = dbLoadTodo($id);
|
||||||
|
|||||||
@@ -32,7 +32,12 @@ async function apiCall(action, method = 'GET', body = null) {
|
|||||||
opts.body = JSON.stringify(body);
|
opts.body = JSON.stringify(body);
|
||||||
}
|
}
|
||||||
const res = await fetch(`${API}?action=${action}`, opts);
|
const res = await fetch(`${API}?action=${action}`, opts);
|
||||||
const data = await res.json();
|
const text = await res.text();
|
||||||
|
let data;
|
||||||
|
try { data = JSON.parse(text); } catch (e) {
|
||||||
|
console.error('API JSON parse error:', action, text.slice(0, 500));
|
||||||
|
throw new Error('Palvelin palautti virheellisen vastauksen');
|
||||||
|
}
|
||||||
if (!res.ok) throw new Error(data.error || 'Virhe');
|
if (!res.ok) throw new Error(data.error || 'Virhe');
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user