var option={ type:“POST”, url:"/", contentType:“application /json;charset:utf-8”, dataType:“json”, data:{ ok:“on”, temperature:“18”, } success:function(response){ console.log(response); } error:function(err){ alert(err); } } $.ajax(option); 以上是我前台post的代码.
app.post("/",function(req,res){
var data={
ok:req.body.ok,
temperature:req.body.temperature
}
console.log(data);
})
这是我后台的代码.但是打印出来的 { ok:undefined ,temperature:undefined}。。 这是什么问题。难道是我post请求的时候没将数据传到后台吗?
补充:
我觉得是Node.js解析的时候出了问题。 在后台: console.log(req.body.ok); console.log(req.body.temperature); 最后输出的都是undefined.
但是我换一种ajax方式: $.post("/",{ok:“on”,temperature:“18”},function(data){ //do something }) 在后台: console.log(req.body.ok); console.log(req.body.temperature); 是可以输出正确结果的。
没搞明白这里面的区别。
ajax中我没看到你传了data
@airyland 编辑的时候写漏了。为什么解析的时候什么都没有呢?- -
有没有使用body parser之类的模块?
@airyland 用的express框架,初始化的时候有使用的~
没人帮忙答疑一下么?
没解析请求吧? urlencoded
app.use(logger(‘dev’)); app.use(bodyParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, ‘public’)));
routes(app);
express初始化的时候都用了的。
@immatt2015 post数据到后台的时候,我console.log(req.query),最后输出的是一个空对象 { }.
这个地方req.body.ok , req.body.temperature 都获取不到数据
我想这个地方是因为前台向后台post数据的时候没成功。。。前台的代码我感觉没问题啊?
@MiguelValentine 求解答~
console.log(req); 会出现啥内容呢? 有没有自己想取得的数据呢?
@immatt2015 获取到的就是我从前台传到后台的数据呀。 好奇怪用$.ajax()方法传到后台的时候取不到值。
没人出来解答下吗?
?
$.post(url,data,function(cbdata){})
把 req 用 console.log 打印出来,看你要的参数在不在里面。 没有的话,是前台没传进来。用 browser 的 network 查参数传递了没有。
$.post多简单,为什么要使用$.ajax
我估计前台提交的contentType有问题,你先改成默认的
contentType: 'application/x-www-form-urlencoded'
试试,没看过jQuery代码,猜想既然定义了dataType,去掉contentType也OK吧…不对,表找我~~