"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تكون قيم Angular HTTP POST غير محددة في PHP، وكيف يمكنني إصلاحها؟

لماذا تكون قيم Angular HTTP POST غير محددة في PHP، وكيف يمكنني إصلاحها؟

تم النشر بتاريخ 2024-12-23
تصفح:221

Why are my Angular HTTP POST values undefined in PHP, and how can I fix it?

Angular HTTP POST إلى PHP: التعامل مع قيم POST غير المحددة

في AngularJS، قد يؤدي تنفيذ طلبات HTTP POST إلى نقاط نهاية PHP أحيانًا إلى غير محدد قيم POST على جانب الخادم. يمكن أن يحدث هذا عندما يكون هناك عدم تطابق بين تنسيق البيانات المتوقع والبيانات الفعلية المرسلة بواسطة تطبيق Angular.

لحل هذه المشكلة، من الضروري التأكد من تعيين رأس نوع المحتوى بشكل مناسب. افتراضيًا، تقوم AngularJS بتعيين هذا الرأس على "application/json". ومع ذلك، إذا كنت ترسل بيانات مشفرة بالنموذج، فيجب تجاوز ذلك.

في الكود المقدم، يقوم السطر التالي بتعيين رأس نوع المحتوى على "application/x-www-form-urlencoded; charset=UTF-8":

$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';

ومع ذلك، يتطلب هذا تعديل البيانات المرسلة لتتوافق مع التنسيق المشفر بالنموذج. بدلاً من إرسال البيانات ككائن، يجب تحويلها إلى سلسلة استعلام. يمكن القيام بذلك عن طريق استخدام jQuery.serialize() أو إنشاء سلسلة الاستعلام يدويًا باستخدام encodeURIComponent().

بدلاً من ذلك، إذا كنت تفضل استخدام وظيفة PHP $_POST، فيمكنك الاحتفاظ بإعداد الرأس الافتراضي وتعديل كود PHP لقراءة المدخلات الأولية من نص الطلب وفك تشفير JSON. يمكن تحقيق ذلك باستخدام الكود التالي:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->password;

من خلال محاذاة تنسيق البيانات وإعدادات الرأس، يمكنك التأكد من استلام قيم POST بشكل صحيح على جانب PHP.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3