我的客户正在进行ajax调用
{{
function callNode(){
console.log("I am called");
var data = {"emailId":"gopal@gmail.com"};
$.ajax({
type: 'POST',
data: JSON.stringify(data),
/* data: {
blob: {wob:"1",job:"2", ar:[1,2,{a:'b'}]}
},*/
contentType: "application/javascript",
//contentType: "application/x-www-form-urlencoded",
dataType:'json',
url: 'http://localhost:3000/notification',
success: function(data) {
console.log('success');
console.log(JSON.stringify(data));
},
error: function(error) {
console.log("some error in fetching the notifications");
}
});
}
}}
我能够在app.js中获取此请求,但无法获取我传递的数据 我试图搜索但没有任何工作
{{
app.post('/notification', function(req, res) {
JSON.stringify(req.params);
/*
var body;
req.on('data', function(chunk) {
console.log("Received body data:");
body += chunk;
});
// the end event tells you that you have entire body
/*req.on('end', function () {
try {
var data = JSON.parse(body);
colnosole.log(data);
} catch (er) {
// uh oh! bad json!
res.statusCode = 400;
return res.end('error: ' + er.message);
}
}
*/
}}
事情是它没有进入任何请求和响应事件(因为我看到很多人使用它来获取数据。
请帮助我知道这是第一次在节点上使用ajax
答案 0 :(得分:3)
由于您以json方式发送数据,因此需要相对更改contentType,因此ajax调用应为:
$.ajax({
type: 'POST',
data: JSON.stringify(data),
/* data: {
blob: {wob:"1",job:"2", ar:[1,2,{a:'b'}]}
},*/
contentType: "application/json",
//contentType: "application/x-www-form-urlencoded",
dataType:'json',
url: 'http://localhost:3000/notification',
success: function(data) {
console.log('success');
console.log(JSON.stringify(data));
},
error: function(error) {
console.log("some error in fetching the notifications");
}
});
在此处,您可以看到contentType已更改为application / json。
在服务器端,您需要检查request.body以获取数据而不是request.params。
答案 1 :(得分:2)
你必须使用正文解析器中间件(https://www.npmjs.org/package/body-parser),你需要声明使用哪个badyParser
app.use(bodyParser.urlencoded())
在主js文件中。然后req.body对象将包含你的json / text / raw / urlencoded数据。
答案 2 :(得分:1)
req.params并没有按照您的想法行事。
app.get('/:route', function(req, res) {
console.log(req.params.route);
});
访问/test
会使用req.params.route
填充test
。
您正在寻找只能与body-parser中间件一起使用的req.body
。