شرح صفوف ومحتوى الفقرة
يتيح تمرير عنصر <form> إلى الكائن new FormData(form) في JavaScript تجميع كافة حقول النموذج تلقائياً وإرسالها بحيث تملأ مصفوفتي $_POST و$_FILES في PHP مباشرة!
- استدعِ
event.preventDefault()داخل مستمع الحدثsubmitلمنع المتصفح من إعادة تحميل الصفحة تقليدياً. - مرر
body: new FormData(form)إلى دالةfetch(form.action, { method: "POST", body }). - عند إرسال كائن
FormData، لا تضبط رأس الطلبContent-Typeيدوياً؛ لأن المتصفح يضبطه تلقائياً مع رمز الفاصلboundaryالصحيح.
لأن كائن FormData يستخدم ترميز النماذج القياسي، يقرأ ملف PHP الحقول مباشرة عبر $_POST["name"] و$_POST["subject"] دون تعقيد.
PHP
<?php
// PHP receives FormData fields directly inside $_POST
$_POST = [
'name' => 'Nadia',
'subject' => 'AJAX Form Inquiry',
];
$name = trim((string) ($_POST['name'] ?? ''));
$subject = trim((string) ($_POST['subject'] ?? ''));
echo json_encode([
'ok' => true,
'received' => "$name: $subject",
]) . "\n";