老莫的笔记本  
  
查看: 1216|回复: 0

koa2 利用 multer 提交表单, ctx.request.body 没有值

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-8-3 16:52:46 | 显示全部楼层 |阅读模式
其实吧,也就是没接收到 前台提交过来的值。 我想了想 后来百度了几小时后 发现是异步问题:
先贴个前端代码:
  1. $.ajax({
  2.                     url : '/media/spresult',
  3.                     type : "POST",
  4.                     data : {
  5.                         // 'qksessionid': jwt
  6.                         'applicantCn' : e.applicantCn  //申请人名称(中文)
  7.                         ,'applicantEn' : e.applicantEn  //申请人名称(英文)
  8.                         ,'intCls' : e.intCls            //国际分类
  9.                         ,'regNo' : e.regNo              //申请/注册号
  10.                         ,'tmName' : e.tmName            //商标名称
  11.                     },
  12.                     // dataType : "json",
  13.                     success : function(ml){
  14.                         alert('成功了');
  15.                         console.log( e.applicantCn +'hhh' + e.applicantEn +'hhh'+e.intCls+'hhh'+e.regNo +'hhh'+e.tmName );
  16.                     },
  17.                     error : function(err){
  18.                         alert('err')
  19.                         layer.tips('服务器链接超时 请检查网络状况')
  20.                     }
  21.                 });
复制代码
可以看出,这是很常规的POST传值。但是后台 ,console.log(ctx.req.body) 显示 没值。  【我所用的是 multer   该情况下不能用 bodypaser, 有冲突】
我上述问题出在 异步上。
解决方法 就是加个 await  

  1. // 点击搜索的接口
  2. router.post('/spresult', async(ctx,next) =>{
  3.     // 接收失败 在这里 要异步获取
  4.     await console.log(ctx.request.body);
  5.     ctx.body ={
  6.         "code": 0,
  7.         "msg": "查询成功",
  8.         "count": 56,
  9.     }
  10. })
复制代码






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表