CNode

egg的controller里面怎么获取请求的参数啊

问答
FFlyerJay发布于9 年前最后回复8 年前25 回复15854 浏览0 收藏

不管用this.ctx.body还是this.params都获取不到参数

查看回复

回复 (18)

C
cmygit#1·8 年前

是不是form表单设置了enctype="multipart/form-data"属性? 我也遇到这个问题,由于楼主没有上代码,不知道你实际问题是啥,我说下我遇到的问题吧! 看egg的文档的时候,看到router那里,直接提交提交post请求是报错的,因为文档有说明,安全威胁 CSRF 的防范。 然后在该章节的示例代码中,form表单是这个样子的:

C
cmygit#2·8 年前

@atian25 大大,你好,虽然我直到这个坑是属于基础知识问题,但因为文档router的章节会引导到这个crfs表单提交的的示例,总有人会踩...我建议应该在文档中标注一下设置enctype="multipart/form-data"是针对文件上传的。

F
FlyerJay#3·9 年前

this.ctx.request 和 this.ctx.req里面也没有,是不是我什么地方配置有问题,

F
FlyerJay#4·9 年前

1.png2.png

L
lzq920#5·9 年前

那看你是什么提交的了。如果是form表单提交的,就用ctx.request.body就取到了

F
FlyerJay#6·9 年前
引用 lzq920那看你是什么提交的了。如果是form表单提交的,就用ctx.request.body就取到了

@461534898 我就是用这个没取到。。。我也不知道为什么这么简单的东西我会遇到问题。。。

F
FlyerJay#7·9 年前
F
FlyerJay#8·9 年前

3.png

O
okoala#9·9 年前

@FlyerJay 你最好放个能重现的项目,一看代码就知道了~ 不然这样只靠猜,效率很低~

L
lzq920#10·9 年前
引用 FlyerJay@461534898 好像是我的request里面没有body这个对象

@FlyerJay ctx.request.body这个对象后面跟上你要取得那个字段名就OK啊

F
FlyerJay#11·9 年前
H
hwj128911#12·9 年前

用this.ctx.query试试

来自酷炫的 CNodeMD

A
atian25#13·9 年前

一般提问总要附上代码吧,给个截图怎么猜。。

  • ctx.body 是输出的,不是读取的,ctx.body = 'hi, egg';
  • ctx.request.body 是输入的 POST body
  • ctx.query 才是输入的查询参数 /news?page=12 -> ctx.query.page
  • ctx.param 是路由匹配的,来自于 koa-router,/users/:id -> ctx.param.id

上面这些其实都不属于 egg 的扩展了,就是 koa 的基础。建议再回去看看 koa 和 egg 的文档。 http://koajs.com/#request

F
FlyerJay#14·9 年前
引用 hwj128911用this.ctx.query试试 来自酷炫的 CNodeMD

@hwj128911 query是查询get参数的

A
atian25#16·9 年前
引用 FlyerJay@atian25 这个文档我也看过,可能是用法有点问题,已经解决了

@FlyerJay 什么问题? 解决了可以描述出来啊

A
atian25#17·9 年前

@sandisen 自己开一个帖子去回复啊,不要到处影响别人

S
SunShinewyf#18·8 年前

@cmygit 你说的 "但因为文档router的章节会引导到这个crfs表单提交的的示例",没看到这个文档中有这个明确的 form 表单的例子呢,不知道是不是说的这里: https://github.com/eggjs/examples/blob/master/multipart/app/view/page/form.html

参与回复
登录后即可参与回复。登录