عند استخدام اياكس (JavaScript غير متزامن و XML) للوصول إلى الخادم دون إعادة تحميل صفحة الويب ، لديك خياران حول كيفية تمرير معلومات الطلب إلى الخادم: GET أو POST.
هذان هما نفس الخيارين لديك عند تمرير الطلبات إلى الخادم لتحميل صفحة جديدة ، ولكن مع وجود اختلافين. الأول هو أنك تطلب فقط قطعة صغيرة من المعلومات بدلاً من صفحة ويب كاملة. الفارق الثاني والأكثر ملاحظته هو أنه نظرًا لعدم ظهور طلب Ajax في شريط العناوين ، فلن يلاحظ زوّارك أي فرق عند تقديم الطلب.
المكالمات التي يتم إجراؤها باستخدام GET لن تكشف الحقول وقيمها في أي مكان لا يستخدمها POST أيضًا عندما يتم إجراء المكالمة من Ajax.
ماذا يجب ان لا تفعل
لذلك ، كيف ينبغي لنا أن نختار أي من هذين البديلين يجب استخدامه؟
من الأخطاء التي قد يرتكبها بعض المبتدئين استخدام GET لمعظم مكالماتهم لمجرد أنه من الأسهل بالنسبة إلى الاثنين. والفرق الأكثر بروزًا بين مكالمات GET و POST في Ajax هو أن مكالمات GET لا تزال لها نفس القدر على كمية البيانات التي يمكن تمريرها عند طلب تحميل صفحة جديد.
الاختلاف الوحيد هو أنه نظرًا لأنك تعالج كمية صغيرة فقط من البيانات مع طلب Ajax (أو على الأقل هكذا لك يجب أن تستخدمه) ، فأنت أقل احتمالًا في الوصول إلى هذا الحد الأقصى للطول من داخل Ajax كما تفعل مع تحميل شبكة كاملة الصفحة. يمكن للمبتدئين الحجز باستخدام طلبات POST للحالات القليلة التي يحتاجون فيها إلى تمرير المزيد من المعلومات التي تتيحها طريقة GET.
أفضل حل عندما يكون لديك الكثير من البيانات لتمرير مثل هذا هو إجراء مكالمات Ajax متعددة بتمرير بعض المعلومات في وقت واحد. إذا كنت ستقوم بتمرير كميات هائلة من البيانات في مكالمة Ajax الواحدة ، فمن المحتمل أن تكون في وضع أفضل بمجرد إعادة التحميل الصفحة بأكملها لأنه لن يكون هناك فرق كبير في وقت المعالجة عندما كميات هائلة من البيانات متورط.
لذا ، إذا كانت كمية البيانات التي سيتم تمريرها ليست سببًا جيدًا للاختيار بين GET و POST ، فما الذي يجب أن نستخدمه في اتخاذ القرار؟
في الواقع ، تم إعداد هاتين الطريقتين لأغراض مختلفة تمامًا ، وتعود الاختلافات بين كيفية عملها جزئيًا إلى اختلاف في الغرض من استخدامها. لا ينطبق هذا فقط على استخدام GET و POST من Ajax ، ولكن في أي مكان قد يتم استخدام هذه الطرق.
الغرض من الحصول على وظيفة
يتم استخدام GET كما يوحي الاسم: احصل على معلومات. الغرض منه هو أن تستخدم عندما تقرأ المعلومات. ستقوم المتصفحات بتخزين النتيجة مؤقتًا من طلب GET وإذا تم تقديم طلب GET نفسه مرة أخرى ، فستعرض النتيجة المخزنة مؤقتًا بدلاً من إعادة تشغيل الطلب بالكامل.
هذا ليس خطأ في معالجة المتصفح ؛ تم تصميمه بشكل متعمد للعمل بهذه الطريقة لجعل مكالمات GET أكثر كفاءة. استدعاء GET هو مجرد استرداد المعلومات. ليس المقصود تغيير أي معلومات على الخادم ، وهذا هو السبب في أن طلب البيانات مرة أخرى يجب أن يعرض النتائج نفسها.
طريقة ما بعد هو ل نشر أو تحديث المعلومات على الخادم. من المتوقع أن يغير هذا النوع من المكالمات البيانات ، وهذا هو السبب في أن النتائج التي يتم إرجاعها من مكالمتي POST متطابقتين قد تكون مختلفة تمامًا عن بعضها البعض. ستختلف القيم الأولية قبل استدعاء POST الثاني عن القيم قبل الأولى لأن المكالمة الأولية سيتم تحديث بعض هذه القيم على الأقل. لذلك ستحصل مكالمة POST دائمًا على استجابة من الخادم بدلاً من الاحتفاظ بنسخة مخبأة من الاستجابة السابقة.
كيفية اختيار الحصول على أو ما بعد
بدلاً من الاختيار بين GET و POST استنادًا إلى كمية البيانات التي تقوم بتمريرها في مكالمة Ajax ، يجب عليك أن تختار بناءً على ما تقوم به مكالمة Ajax بالفعل.
إذا كانت المكالمة لاسترداد البيانات من الخادم ، فاستخدم GET. إذا كان من المتوقع أن تتغير القيمة المراد استردادها بمرور الوقت كنتيجة لعمليات أخرى تقوم بتحديثها ، أضف معلمة وقت حالية إلى ما تقوم بتمريره في مكالمة GET حتى لا تستخدم المكالمات اللاحقة نسخة مخبأة مؤقتًا من النتيجة لم تعد صيح.
استخدم POST إذا كانت مكالمتك ستكتب أي بيانات على الإطلاق إلى الخادم.
في الواقع ، لا ينبغي عليك استخدام هذا المعيار فقط للاختيار بين GET و POST لمكالمات Ajax ولكن أيضًا عند تحديد أي من هذه العناصر يجب أن تستخدم لمعالجة النماذج على صفحة الويب الخاصة بك.