一个获取 POST 表单的问题 [ 2.0 版本 ]
前端使用 axios 和 Yii 后台交互时,用 file_get_contents("php://input") 才能获取到 POST 过来的数据,而 \Yii:$app->request()->post() 获取不到,有没有什么办法能让 \Yii::$app->request() 这个类也获取到 file_get_contents("php://input") 的数据
最佳答案
-

https://www.php.net/manual/zh/reserved.variables.post.php
Yii:$app->request()->post()是解析的$_POST中的数据,所以提交的Content-Type必须是application/x-www-form-urlencoded或multipart/form-data所以解决方案就是修改
axios的提交类型参考地址
https://www.cnblogs.com/sunjinggege/p/9396589.html如果要像你说的,将
file_get_contents里的数据也要并到里面,那么要改源码了,或者封装一个request对象,但是带来的问题是,file_get_contents获取到了原始的http请求body,而非键值,所以合并之后估计会带来一些键值的问题。共 2 条回复
谢谢回复,我在 axios 里设置了
headers:{'content-type': 'application/x-www-form-urlencoded'},现在后端的\Yii::$app->request()能接收到 POST 过来的数据了,但是仍然有新的问题。我发送的数据是data:{page:1},期待能在后台接收到的是["page" => 1]这样一个数组,结果接收到的却是["{page:1}" => ""]这样一个诡异的数组,我继续搜索了一下,利用一个URLSearchParams的方法可以预处理数据方便后端解析,但是解析出来的是["page" => "1"]把整型 1 自动变成了字符串"1",有没有什么可以直接让后台接收到["page" => 1]并且不自动转换成字符串类型的方法?
其他 0 个回答
捣捣爸
最后登录:2022-04-26
在线时长:9小时29分
- 粉丝0
- 金钱105
- 威望10
- 积分295