JavaScript والبيانات / JavaScript and data

الترتيب / Order
3 من 4 / 3 of 4
آخر تحديث / Updated
8 أكتوبر 2026 / 8 October 2026

أهداف الدرس

  1. أن تجلب بيانات من واجهة برمجية.
  2. أن تتعامل مع الخطأ.
  3. أن تعرض البيانات دون ثغرة XSS.

fetch يعيد وعداً، وawait ينتظره دون أن يجمّد الصفحة.

JavaScript
async function loadNews() {
  const res = await fetch('/api/announcements');
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const items = await res.json();

  const list = document.querySelector('#news');
  list.replaceChildren(...items.map(a => {
    const li = document.createElement('li');
    li.textContent = a.title;   // textContent, never innerHTML
    return li;
  }));
}

لا تضع نصاً جاء من مستخدم في innerHTML: سطر خبيث واحد يصبح شيفرة تعمل في متصفح كل زائر.

تمرين

ماذا يحدث لو أعاد الخادم 500؟

الإجابة

res.ok يكون false فنرمي خطأ، والمستدعي يلتقطه بـ try/catch ويعرض رسالة لطيفة.

Lesson goals

  1. Fetch data from an API.
  2. Handle the error case.
  3. Show the data without an XSS hole.

fetch returns a promise, and await waits for it without freezing the page.

JavaScript
async function loadNews() {
  const res = await fetch('/api/announcements');
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const items = await res.json();

  const list = document.querySelector('#news');
  list.replaceChildren(...items.map(a => {
    const li = document.createElement('li');
    li.textContent = a.title;   // textContent, never innerHTML
    return li;
  }));
}

Never put user-supplied text into innerHTML: one malicious line becomes code running in every visitor's browser.

Exercise

What happens if the server returns 500?

Answer

res.ok is false, so we throw; the caller catches it with try/catch and shows a friendly message.

التعليقات / Comments

لا تعليقات بعد. كن أول من يسأل. / No comments yet. Be the first to ask.

تعليق الطالب يظهر فوراً، وتعليق الزائر بعد موافقة المدرّس. / A student's comment shows at once; a visitor's once the teacher approves it.

في «تطوير الويب» / In “Web development”

  1. 1HTML بمعنى / Meaningful HTMLفيها كود / has codeالتعليقات مفتوحة / comments open
  2. 2تخطيط CSS / CSS layoutفيها كود / has codeفيها صور / has picturesالتعليقات مفتوحة / comments open
  3. 3JavaScript والبيانات / JavaScript and dataفيها كود / has codeالتعليقات مفتوحة / comments open
  4. 4صفحة بلغتين / A two-language pageفيها كود / has codeالتعليقات مفتوحة / comments open

↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق↑ ↓ to move · Enter to open · Esc to close