• 0

كيفية الوصول إلى حقول نموذج POST

لدي 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 ماهو المشكل ؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يبدو أن form يرسل بيانات بطريقة post وبهذه الحالة تُرسل البيانات ضمن الطلبية request ضمن body.

يمكنك قراءة هذه parameter من req.body ثم اسم الحقل المطلوب.

var email = req.body.email;

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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
أخطاء إملائية
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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

تمّ تعديل بواسطة عبدالمجيد الجرادي

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن