我已经通过stackoverflow搜索了这个问题,但无法得到解决我问题的任何答案。
这甚至是我的node.js书中的示例代码。我不知道为什么这不起作用,我想起诉本书的作者。他给了我很大的压力。
1] server.js中的代码
app.post('/products', function (request, response){
console.log(request.params);
var name = request.params.name;
var price = request.params.price;
var item = {
name : name,
price : price
};
items.push(item);
response.send({
message : 'Data pushed',
data : item
});
});
2] index.html中的代码
$('#post').click(function(){
console.log($('#name').val());
console.log($('#price').val());
$.ajax({
url:'/products',
type:'post',
dataType : 'text',
data : {
name : $('#name').val(),
price : $('#price').val()
},
success : function(data){
$('#output').val(data);
}
});
});
我可以通过console.log看到我在Chrome浏览器控制台的#name和#price中输入的正确数据。但我无法通过console.log(request.params)在server.js中看到任何数据。 console.log(request.params),console.log(request.params.id),console.log(reqeust.params.price)都返回'undefined' 为什么它返回undefined? 我尝试了很多通过互联网搜索过的东西,但没有解决。有什么问题?
答案 0 :(得分:0)
您是否在服务器文件中使用了Expess?
var app = express();
app.use(express.bodyParser());
或者
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
在服务器js中,您需要使用request.body
代替request.params
,
var name = request.body.name;
var price = request.body.price;
您正在从服务器发送json
,因此请使用dataType : 'json'
,
$.ajax({
url:'/products',
type:'post',
dataType : 'json', // use json instead of text
data : {
name : $('#name').val(),
price : $('#price').val()
},
success : function(data){
console.log(data);// for name use data.data.name
//$('#output').val(data);
}
});