انتقل إلى محتوى الدرس

Handling Network and HTTP Status Errors معالجة أخطاء الشبكة ورموز الحالة في fetch

اربط طلبات fetch() الحديثة في JavaScript مع ملفات الخادم في PHP لتحديث محتوى الصفحة دون إعادة تحميلها.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

من القواعد الجوهرية في Fetch API أن دالة fetch() لا تطلق استثناءً تلقائياً عند رموز الخطأ مثل 400 أو 404 أو 500، بل ترفض الوعد فقط عند انقطاع الشبكة!

  • افحص دائماً الشرط if (!response.ok) في JavaScript (والذي يكون صحيحاً فقط لرموز الحالة بين 200 و299).
  • على جانب PHP، اضبط رمز الحالة عبر http_response_code(404) أو 422 مع إرجاع كائن JSON يوضح رسالة الخطأ في مفتاح error.
  • أحِط استدعاء fetch() بكتلة try / catch لمعالجة انقطاع الاتصال وأخطاء الخادم معاً.

الجمع بين http_response_code(404) والمفتاح المنطقي "ok": false داخل JSON يجعل معالجة الأخطاء في الواجهة الأمامية واضحة وموحدة.

PHP
<?php
function sendJsonError(int $status, string $message): string {
    http_response_code($status);
    return json_encode([
        'ok'     => false,
        'status' => $status,
        'error'  => $message,
    ]);
}

echo sendJsonError(404, 'Lesson record not found') . "\n";