اذهب إلى المحتوى

السؤال

نشر

لدي إستمارة بسيطة للغاية بالشكل التالي:

<form action="/api/search" method="post">
    <label for="query">Search For: </label>
    <input type="text" id="query" name="query" />
    <input type="submit" value="Search" />
</form>

وفي الواجهة الخلفية Backend قمت بكتابة الكود التالي بإستخدام Express.js:

app.post('/api/search', function(req, res){
    const { query } = req.query;
  console.log(query);
}

ولكن المشكلة أن هذا الكود لا يعمل ولا يمكنني الوصول إلى قيم الحقول المرسلة ضمن الطلب request، حاولت كذلك إستعمال req.params.query و req.query.query ولكن تكون النتيجة دائمًا عبارة عن undefined

ما المشكلة هنا؟ وكيف يمكنني الوصول إلى القيم التي أدخلها المستخدم في الإستمارة؟

Recommended Posts

  • 0
نشر (معدل)

إن البيانات سيكون قد تم إرسالها في ال body الخاص بال request و بشكل عام على شكل json و هذا هو الأمر المتعارف عليه.

و بالتالي يمكنك الوصول إلى البيانات المرسلة عن طريق الوصول إلى ال body الخاص بال request بالشكل التالي:

app.post('/api/search', function(req, res){
    console.log(req.body);
}

يمكنك رؤية خرج ما سبق حتى تعرف تماما كيف تم تنظيم البيانات ضمن ال json المرسل و بالتالي كيف يمكن الوصول إلى كل قيمة، تذكر يمكنك معاملة ما سبق على أنه object في ال js و بالتالي يمكن الوصول إلى ال attriubutes بسهولة بعد معرفة الهيكل العام لل body.

تم التعديل في بواسطة Kais Hasan
  • 1
نشر (معدل)

 قبل كل شيء تأكد من وجود مكتبة body-parser  في ملف package.json  في root المشروع. يجب أن يحتوي هذا الملف على تعريف المكتبة آنفة الذكر وكما يلي:

 
	...
"dependencies": {
    ...
    "body-parser": "^1.18.3",
    ...
    
}
	...
	

إذا لم تكون موجودة قم بإضافتها ثم نفذ الأمر yarn  أو npm install بحسب ما تستخدمه. بعد إنتهاءك من تنفيذ الأمر بنجاح قم بأضافة الأسطر التالية إلى  الملف الرئيسي الذي تستورد فيه express .  هذه المكتبة مسؤولة عن تحليل هيئات (body)الطلبات الواردة في برمجية وسيطة قبل التعامل معها

...
const bodyParser = require('body-parser');  // إستيراد
...
app.use(bodyParser.urlencoded({extended: false})); // إستقبال طلبات url المشفرة
app.use(bodyParser.json()); // إستقبال طلبات Content-Type: application/json
...

بعد هذا يمكنك الوصول الى محتويات body من خلال req.body

تم التعديل في بواسطة علي محسن

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...