node.js - response.writeHead not sending post data -
मेरे पास निम्न कोड है
console.log (typeof (postData)); console.log (typeof (querystring.parse (POSTDATA))); console.log (typeof (querystring.parse (POSTDATA) .text)); console.log (querystring.parse (POSTDATA) .text); Var सामान = querystring.parse (postData) .text; console.log (सामान); Stuff = "आपने पाठ भेजा है:" + सामान; console.log (सामान); Console.log ("अनुरोध हैंडलर 'अपलोड' बुलाया गया था।"); Response.writeHead (200, {"सामग्री प्रकार": "पाठ / सादे"}); console.log (response.write (सामान)); response.end (); Console.log ("अधिक पाठ"); console.log (सामान);
कंसोल में मुझे मिलता है
स्ट्रिंग ऑब्जेक्ट स्ट्रिंग fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff आप पाठ भेजा है: ffffffffffffffffffffffffffffffffffffff अनुरोध हैंडलर 'अपलोड' कहा जाता था। झूठा अधिक पाठ आपने पाठ भेजा है: ffffffffffffffffffffffffffffffffffffff
लेकिन वेबपेज पर मुझे
आपने पाठ भेजा है: अपरिभाषित
मैं समझ नहीं पा रहा हूं कि मेरा पोस्ट डेटा क्यों नहीं भेजा जा रहा है, लेकिन स्ट्रिंग मैं इसे संलग्न कर रहा हूं।
मैं नोड शुरुआती पुस्तक के ट्यूटोरियल का अनुसरण कर रहा हूं।
पूर्ण अनुरोधहैंडलर्स कोड (कम से कम कंसोल), जहां आरंभ पृष्ठ प्रारंभ होता है और अपलोड किया जाता है (पिछला कोड)
var querystring = need ("querystring"); समारोह शुरू (प्रतिक्रिया, पोस्टडेटा) {var बॉडी = '& lt; html & gt;' + '& lt; head & gt;' + '& lt; मेटा http-equiv = "सामग्री प्रकार" सामग्री = "पाठ / html;' + 'charset = यूटीएफ -8 "/ & gt; '+' & lt; / head & gt; '+' & lt; body & gt; '+' & lt; फॉर्म एक्शन =" / अपलोड "विधि =" पोस्ट "& gt; '+' & lt; textarea name =" "+" & Lt; इनपुट प्रकार = "सबमिट करें" मान = "पाठ सबमिट करें" / & gt; '+' & lt; / form & gt; '+' पाठ "पंक्तियों =" 20 "cols =" 60 "& gt; & lt; / textarea & gt; & Lt; / body & gt; '+' & lt; / html & gt; '; Response.writeHead (200, {"सामग्री-प्रकार": "पाठ / html"}); response.write (शरीर); response.end (); } फ़ंक्शन अपलोड (प्रतिक्रिया, पोस्टडेटा) {var stuff = querystring.parse (postData) .text; Stuff = "आपने पाठ भेजा है:" + सामान; Response.writeHead (200, {"सामग्री प्रकार": "पाठ / सादे"}); response.end (); } Export.start = start; Export.upload = अपलोड;
मुझे लगता है कि त्रुटि संभवतः आपके अनुरोध में नहीं हैहैंडर्स.जेएस। हालांकि, आपके स्निपेट में आप "response.write (" आपने पाठ भेजा है: "+ सामान) में डाल देना भूल गए हैं;" लाइन, मैं यह एक कॉपी और पेस्ट त्रुटि मान रहा हूँ।
आपकी start.js फ़ाइल इस तरह दिखनी चाहिए:
var http = need ("http") ; Var url = आवश्यकता ("url"); फ़ंक्शन प्रारंभ (मार्ग, हैंडल) {फ़ंक्शन ऑन अनुरोध (अनुरोध, प्रतिक्रिया) {var postData = ""; Var पथनाम = url.parse (request.url) .पथ नाम; Console.log ("के लिए अनुरोध" + पाथनाम + प्राप्त "।"); request.setEncoding ( "UTF8"); Request.addListener ("डेटा", फ़ंक्शन (पोस्टडेटा चांक) {postData + = postDataChunk; console.log ("प्राप्त डाक डेटा चक्र '" + पोस्टडेटा चांक + "' '।");}); Request.addListener ("अंत", फ़ंक्शन () (मार्ग (संभाल, पथनाम, प्रतिक्रिया, पोस्टडेटा);}); } Http.createServer (onRequest) .listen (8888); Console.log ("सर्वर शुरू हुआ है"); } Export.start = start;
ध्यान दें कि रूट को अनुरोध ऑब्जेक्ट्स "एंड" हैंडलर में कहा जाता है और पोस्टडेटा अनुरोध वस्तु के "डेटा" हैंडलर में "विखंडू" में बनाया जाता है।
आपकी रूटर.जेएस फ़ाइल में होनी चाहिए;
फ़ंक्शन मार्ग (संभाल, पाथनाम, प्रतिक्रिया, पोस्टडेटा) {console.log ("पथ के बारे में अनुरोध के लिए" + पथनाव); अगर (प्रकार का संचालन [पथनाम] === 'फ़ंक्शन') {हैंडल [पाथनाम] (प्रतिक्रिया, पोस्टडेटा); } Else {console.log ("कोई अनुरोध हैंडलर" + पाथनाम के लिए मिला है); Response.writeHead (404, {"सामग्री-प्रकार": "पाठ / सादे"}); Response.write ("404 नहीं मिला"); response.end (); }} Export.route = मार्ग;
मुझे लगता है कि यहाँ कुंजी यह सुनिश्चित करने के लिए है कि आप पोस्टडेटा चर और अनुरोध चर नहीं कर रहे हैं। मैं यह अनुमान लगा रहा हूं कि आपके कोड में क्या हो रहा है।
यह पुस्तक के सभी पृष्ठ 51-53 पर है।
Comments
Post a Comment