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

السؤال

نشر

لدي form

<form id="login" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

وهذه هي ال endpoint 

app.post('/userlogin', function(req, res){    
    var email = req.query.email;   
  console.log(email)
}

email ترجع undefined ماهو المشكل ؟

Recommended Posts

  • 0
نشر (معدل)

إضافة إلى ما تفضل الأخ @Wael Aljamalبشرحه .

طبقا للتوثيق الرسمي فإن الخاصية query عبارة عن كائن يحتوي كل الخصائص لكل بارمتر ممرر في الروات . و في حالة تعطيل الquery-parser فإن الخاصية query ستقوم بإعادة كائن فارغ و بطبيعة الحال فإن أي قراءة لخاصية عن طريق query ستقوم بإعادة undefined , ويخص بالقول طلبيات الـ GET فقط أي أنه معطل في ما غير ذلك .

فحل المشكلة هو إما بتغيير الطريقة إلى GET فيكون : 

<form id="login" action="userlogin" method="GET">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

أو بالقراءة من الPOST . 

قد تحتاج تسطيب body parser في نسخ متقدمة من Express (+4.16) و من ثم استعماله على هذا النحو : 

قم بتسطيب الحزمة :

npm install --save body-parser

ثم استعمالها بشكل Globally :

var bodyParser = require('body-parser')

app.use( bodyParser.json() );       // لدعم تشفير الجيسون في البودي
app.use(bodyParser.urlencoded({     // لدعم تشفير اليو ار ال في البودي
  extended: true
})); 

أما ان كنت تستخدم نسخ أقل من 4.16 فتستطيع مباشرة : 

app.use(express.json());       // دعم تشفير الجيسون في البودي
app.use(express.urlencoded()); // دعم تشفير اليو ار ال في البودي

ومن ثم القراءة على هذا النحو :

app.post('/your-end-point', function(req, res) {
    var email = req.body.email;
});

 

تم التعديل في بواسطة Adnane Kadri
أخطاء إملائية
  • 0
نشر (معدل)

إذا استخدمت الطريقة GET في ال Form فهنا سيتم إرسال البيانات عبر الرابط وهي تسمى Queries وهنا يمكنك استخدام هذا الكود للحصول على البيانات

app.get('/userlogin', function(req, res){    
    var email = req.query.email;   
  console.log(email)
}

فالQueries هي للطريقة GET

ولكن انت استخدمت الطريقة POST لهذا فإن البيانات هذه المرة لن تذهب عبر الرابط ولن يتم إضافة Queries ولكن سيتم إرسال البيانات عبر مايسمى بال body وعند إستقبالها من الخادم يجب عليك الحصول عليها من body وليس query كما هو مبين في الكود

app.post('/userlogin', function(req, res){    
    var email = req.body.email;   
  console.log(email)
}

وايضا ستحتاج لإستخدام مايسمى بال middleware كما وضح الأخ عدنان لكي تستطيع القراءة من ال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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...