ajax请求后台数据
发布于 15天前 作者 CommanderXL 352 次浏览 最后一次编辑是 14天前 来自 问答

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); 是可以输出正确结果的。

没搞明白这里面的区别。

18 回复

ajax中我没看到你传了data

@airyland 编辑的时候写漏了。为什么解析的时候什么都没有呢?- -

有没有使用body parser之类的模块?

@airyland 用的express框架,初始化的时候有使用的~

没人帮忙答疑一下么?

没解析请求吧? urlencoded

@immatt2015

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()方法传到后台的时候取不到值。

没人出来解答下吗?

@CommanderXL

$.post(url,data,function(cbdata){})

把 req 用 console.log 打印出来,看你要的参数在不在里面。 没有的话,是前台没传进来。用 browser 的 network 查参数传递了没有。

$.post多简单,为什么要使用$.ajax

我估计前台提交的contentType有问题,你先改成默认的

contentType: 'application/x-www-form-urlencoded'

试试,没看过jQuery代码,猜想既然定义了dataType,去掉contentType也OK吧…不对,表找我~~

回到顶部