2012-11-28 12 views
5

मैं bodyParser में एक्सप्रेस के साथ एक त्रुटि हो रही है किसी भी PUT अनुरोध ... मेरी config तो तरह की स्थापना की है पार्स करने के लिए विफल हो रहा है:नोड/एक्सप्रेस - bodyParser PUT के लिए खाली अनुरोध करता

app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(express.query()); 
app.use(app.router); 

हालांकि हर मैं एक एंडपॉइंट पर पुट अनुरोध करें, req.body 'अपरिभाषित' के रूप में लौटाता है।

$.ajax({ 
    url: 'https://localhost:4430/api/locations/5095595b3d3b7b10e9f16cc1', 
    type: 'PUT', 
    data: {name: "Test name"}, 
    dataType: 'json' 
}); 

कोई भी विचार:

मैं बहुत की तरह भी jQuery ajax अनुरोध के माध्यम से Chromes बाकी कंसोल के माध्यम से अनुरोध करने की कोशिश की है, और?

+1

यह फिक्स्ड - एक्सप्रेस मिडलवेयर से पहले मेरे मार्गों को स्थापित करने के द्वारा मेरे द्वारा एक मूर्ख चीज थी। – leepowell

+0

क्या आप इस पर थोड़ा सा विस्तार कर सकते हैं, मुझे पुट अनुरोधों के साथ एक ही समस्या है। –

उत्तर

6

आपको सामग्री-प्रकार को application/json पर सेट करने की भी आवश्यकता है। आपका jQuery अनुरोध होना चाहिए:

$.ajax({ 
    url: 'https://localhost:4430/api/locations/5095595b3d3b7b10e9f16cc1', 
    type: 'PUT', 
    contentType: 'application/json', 
    data: JSON.stringify({name: "Test name"}), 
    dataType: 'json' 
}); 

अन्यथा, शरीर पार्सर शरीर को पार्स करने का प्रयास नहीं करेगा।

संपादित: यहाँ अपने परीक्षण कोड है

  1. भागो express test

  2. app.js में एक /test मार्ग जोड़ें:

 
app.all('/test', routes.test); 

और routes/index.js :

 
exports.test = function (req, res) { 
    console.log(req.body); 
    res.send({status: 'ok'}); 
}; 
  1. लिंक jQuery और index.jade में निम्न स्क्रिप्ट:
 
$(function() { 
    $('#test').click(function() { 
    $.ajax({ 
     url: '/test', 
     type: 'PUT', 
     contentType: 'application/json', 
     data: JSON.stringify({name: "Test name"}), 
     dataType: 'json' 
    }); 
    }); 
}); 

जब मैं इस चलाने के लिए, मैं निम्नलिखित लॉग मिलती है:

 
Express server listening on port 3000 
GET/200 26ms - 333 
GET /stylesheets/style.css 304 2ms 
GET /javascripts/test.js 304 1ms 
{ name: 'Test name' } 
PUT /test 200 2ms - 20 
+0

धन्यवाद, बस कोशिश की और कोई भाग्य नहीं :( – leepowell

+0

मैंने अभी परीक्षण किया और यह मेरे लिए काम करता है। मैं अपने टेस्ट कोड के साथ अपना जवाब अपडेट करूंगा। –

+0

धन्यवाद लॉरेन - मुझे अपने कोड के साथ समस्या मिली। मैं मार्ग से पहले मार्ग स्थापित कर रहा था एक्सप्रेस मिडलवेयर इसलिए शरीर के माध्यम से कुछ भी नहीं चल रहा था। – leepowell

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