/ / अजाक्स पोस्ट अनुरोध से Node.js सर्वर पर स्ट्रिंग तक पहुँच - जावास्क्रिप्ट, नोड .js, AJAX, एक्सप्रेस

Ajax पोस्ट रिक्वेस्ट से Node.js सर्वर पर स्ट्रिंग एक्सेस करना - javascript, node.js, ajax, एक्सप्रेस

यह अजाक्स और नोड.जेएस के साथ काम करने वाली मेरी पहली परियोजना है और अब तक मेरे सभी पोस्ट अनुरोध फॉर्म सबमिशन के माध्यम से किए गए हैं।

मैं अब उपयोग करने की कोशिश कर रहा हूं $.ajax भेजने के लिए POST और स्ट्रिंग "कॉकटेलिड" पास करें server.js एक div के बाद उपयोग करने के लिए click().

मैं सोच रहा था कि इसे पूरा करने का सबसे आसान तरीका क्या होगा।

अजाक्स कोड

$(".col-sm").click(function(){
//Append to console a log that cocktail div has been clicked.
console.log("Cocktail Clicked.");
console.log(this);

//Create variable to hold id of cocktail div clicked
var cocktailid = $(this).attr("id");
cocktailid = cocktailid.replace(/s+/g, "_");
cocktailid = cocktailid.replace(/"/g, "");
alert(cocktailid);

$.ajax({
type: "POST",
url: "/adddrink",
data: { "field1": cocktailid},
dataType: "json",
cache: false,
contentType: "application/json",
success: function(data) {
console.log("success");
console.log(cocktail + "sent.");
console.log(JSON.stringify(data));
}
});
})
};

Server.js

app.post("/adddrink", function(req, res){
console.log(req.body);
});

मैंने कुछ अलग प्रारूपों में डेटा भेजने की कोशिश की है और अलग-अलग समस्याएं थीं, वर्तमान में मेरा सर्वर निम्नलिखित त्रुटि दिखा रहा है:

SyntaxError: Unexpected token # in JSON at position 0
at JSON.parse (<anonymous>)
at createStrictSyntaxError (/home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/body-parser/lib/types/json.js:157:10)
at parse (/home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/body-parser/lib/types/json.js:83:15)
at /home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/body-parser/lib/read.js:121:18
at invokeCallback (/home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/raw-body/index.js:224:16)
at done (/home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/home/codio/workspace/CocktailMixerGroupRepo/website/node_modules/raw-body/index.js:273:7)
at IncomingMessage.emit (events.js:160:13)
at endReadableNT (_stream_readable.js:1101:12)
at process._tickCallback (internal/process/next_tick.js:152:19)

अभी मैं सिर्फ दिखाना चाहता हूं कि मैं नोड सर्वर पर स्ट्रिंग को एक्सेस कर सकता हूं।

मैं एक समाधान के लिए चारों ओर तलाश करने की कोशिश की और मेरे प्रयासों के बाद मुझे उम्मीद है कि मैं वास्तव में जटिल हूं जो मैं हासिल करने की कोशिश कर रहा हूं, किसी भी मदद की बहुत सराहना की जाएगी!

उत्तर:

जवाब के लिए 0 № 1

आप का उपयोग करने के लिए है: JSON.stringify पर data

$.ajax({
type: "POST",
url: "/adddrink",
data: JSON.stringify({
"field1": cocktailid
}),
dataType: "json",
cache: false,
contentType: "application/json",
success: function(data) {}
});

इसके बिना पेलोड है field1=yes के बजाय {"field1":"yes"} यही कारण है कि तुम क्यों हो रही है SyntaxError: Unexpected token # in JSON at position 0 क्योंकि आप एक वैध JSON पोस्टिंग नहीं कर रहे थे।

अधिक विस्तृत त्रुटि के लिए, आप मिडलवेयर से निपटने में त्रुटि जोड़ सकते हैं बाद body-parser JSON त्रुटियों को संभालने के लिए।

app.use(bodyParser.json());

app.use((err, req, res, next) => {

// Body parser middleware Error
if(err instanceof SyntaxError) {

// err.body contains the actual body that was posted
// which won"t be a valid JSON.
console.error(`Invalid JSON: ${err.body}`);

return res
.status(400) // Bad request
.send({
message: "Invalid JSON"
});

}

next();
});