想个办法让model能够得到ajax提交的json数据 [ 2.0 版本 ]
想个办法让$model->load(Yii::$app->request->post())能够得到ajax提交的json数据
Mr_Zhu 补充于 2017-05-18 15:10
大婶们来回答我的问题啊,非常感谢!!!
最佳答案
-
你的描述:提到一个ajax的json数据 $model->load()
先分析下步骤:判断ajax请求 转换raw HTTP request body 也就是你所发送的json数据,拿到这个数据只要用json::decode转换成数组,那就随你怎么办了
知道步骤了,那就代码了
if(Yii::$app->request->isAjax) 这就是判断ajax的方法,请求都是在 request里的,去看下API就行了那如何转换数据呢,当然方法太多了,目的只有一个就转换数据,那数据从哪来呢,当然是request这个对象里,在哪里处理呢,生命周期,事件。
共 2 条回复首先,我打印了ajax用POST方法传过来的数据,是数组,然后我就根据自己的思路 验证了一下发现完全可以,个人比较赞同刀哥的回答。顺便贴上我的代码,希望能为后来者一些启发吧!
if (Yii::$app->request->isAjax) {$data = Yii::$app->request->post(); $username = explode(":", $data['username']); $password = explode(":", $data['password']); $sms = explode(":", $data['sms']); $model = new SignupForm(); $model->username = $username[0]; $model->password = $password[0]; $model->sms = $sms[0]; }
其他 9 个回答
-
zcx147716565 回答于 2017-05-18 16:10 举报
你不能写个接口?post获取的是表单里面的内容
-
dingjj2010 回答于 2017-05-18 17:56 举报
具体看json数据的格式,如果不是从yiiactiveform提交过来的,json对应的是model的key=>value,在post外层加上model的名称,可以这样
$model->load([$model->formName()=>Yii::$app->request->post()]);
dashixiong 觉得很赞 -
/** * 重载load方法 */ public function load($data, $formName = null) { if (parent::load($data, $formName)) { return $this->loadGoodsData(); } return false; } private function loadGoodsData(){ //在这里处理你的JSON return true; }
共 1 条回复
Mr_Zhu
注册时间:2017-01-16
最后登录:2017-08-04
在线时长:13小时12分
最后登录:2017-08-04
在线时长:13小时12分
- 粉丝1
- 金钱295
- 威望0
- 积分425