Yii2 Ajax Post 实例及常见错误修正

先贴下我的代码:

signup.js
$('.reg_verify_pic').click(function(){ var csrfToken = $('meta[name="_csrf-Token"]').attr("content"); var mobileNum = $('#signupform-mobile').val(); console.log(mobileNum); $.ajax({ url:"index.php?r=sms/sms", type:"POST", data:{phone:mobileNum,_csrf:csrfToken}, dataType:"json", success:function(data){ console.log(data); }, error:function(er){ console.log('错误'); } })
SmsController 
public $enableCsrfValidation = false ;

public function actionSms() { if(Yii::$app->request->isAjax) { $data = Yii::$app->request->post(); $phone= explode(":", $data['phone']); $phone = $phone[0]; }
$code = rand(100000,999999); $c = new TopClient; $c->appkey = 'XXXXXXXX'; $c->secretKey = 'XXXXXXXXXXXXXXXXXXXX'; $req = new AlibabaAliqinFcSmsNumSendRequest; $req->setExtend(""); $req->setSmsType("normal"); $req->setSmsFreeSignName("XXXX"); $req->setSmsParam("{ \"code\":\"$code\",product:'XX'}"); $req->setRecNum($phone); $req->setSmsTemplateCode("SMS_XXXXXXX"); $resp = $c->execute($req); //var_dump($resp); if($resp){ return json_encode($resp); } }

 Yii2可以跟Ajax协作轻松完成我们想要的任何效果。但是,对于使用不熟练的开发者仍然会遇到很多问题。

FIRST,400错误:出现的原因在于csrf问题。

解决办法:1,2,3作用等同,只采用一种即可。

1、接口的控制器中添加:

  public $enableCsrfValidation = false ;

2、接口的控制器中添加:

  public function beforeAction($action){
          $this->enableCsrfValidation = false;
          return parent::beforeAction($action);
      }

3、接口的控制器中添加:

  public function  init{
          $this->enableCsrfValidation = false;
      }

扩展:

1、frontend或者backend局部开启

  在前台或者后台的配置main.php文件中:

  request => [
    'enableCookieValidation' => false,
  ]

2、全局开启

在common/config/main.php

  request => [
    'enableCookieValidation' => false,
  ]

 按照上面的方法,配置完成之后出现了500错误,怎么办?看出错信息啊!!!任何问题解决关键都在于找到问题的原因和位置。

posted @ 2017-05-10 11:00  Mr.peter  阅读(462)  评论(0编辑  收藏  举报