2011-09-22 18 views
25

मैं एक्सप्रेस का उपयोग कर रहा हूं और बॉडी पार्सर से फॉर्म डेटा प्राप्त करने में परेशानी कर रहा हूं। कोई फर्क नहीं पड़ता कि मैं क्या करता हूं यह हमेशा एक खाली वस्तु के रूप में आता है। जब मैं प्रस्तुतनोड.जेएस/एक्सप्रेस फॉर्म पोस्ट req.body काम नहीं कर रहा

<!doctype html> 
<html> 
    <body> 
<form id="myform" action="/" method="post" enctype="application/x-www-form-urlencoded"> 
    <input type="text" id="mytext" /> 
    <input type="submit" id="mysubmit" /> 
</form> 
    </body> 
</html> 

:

var express = require('express'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', function(req, res){ 
    res.sendfile('./public/index.html'); 
}); 

app.post('/', function(req, res){ 
    console.log(req.body); 
    res.sendfile('./public/index.html'); 
}); 

app.listen(3010); 

यहाँ मेरी एचटीएमएल रूप है: यहाँ मेरी एक्सप्रेस app.js कोड जेनरेट किया गया है (केवल एक चीज मैं जोड़ा तल पर app.post मार्ग था) फार्म, req.body एक खाली वस्तु {}

इसके लायक ध्यान देने योग्य बात यह भी है कि अगर मैं प्रपत्र टैग

से enctype विशेषता को दूर होता है कि ... वहाँ कुछ मुझे याद आ रही है/गलत है?

मैं नोड v0.4.11 और एक्सप्रेस v2.4.6

उत्तर

33

एक HTTP पोस्ट का मुख्य भाग का उपयोग कर रहा एक name विशेषता के साथ सभी प्रपत्र नियंत्रण की एक कुंजी/मान हैश है, और मूल्य है नियंत्रण का मूल्य।

आपको अपने सभी इनपुट में नाम देने की आवश्यकता है।

+0

धन्यवाद! यकीन नहीं है कि मैंने इसे कैसे अनदेखा किया ... – binarymax

4

यह सामग्री प्रकार के कारण भी है। कृपया console.log (req) ऑब्जेक्ट देखें।

'content-type': 'application/json; charset=UTF-8’ // valid. 

'content-type': 'application/JSON; charset=UTF-8’ // invalid & req.body would empty object {}. 

console.log द्वारा सामग्री प्रकार (req.is ('json')) की जांच करने के // सच वापसी/गलत

मुझे लगता है कि 'charset = UTF-8' ऊपर में नगण्य है।

संबंधित मुद्दे