Php 更改yii2api操作

Php 更改yii2api操作,php,ajax,rest,yii2-advanced-app,Php,Ajax,Rest,Yii2 Advanced App,我使用yii2(2.0.13)。使用ajax发送数据时,返回的响应包含一个错误 我的代码: namespace frontend\controllers; use Yii; use yii\rest\ActiveController; class CityController extends ActiveController { public $modelClass = 'frontend\models\City'; public function actions(

我使用yii2(2.0.13)。使用ajax发送数据时,返回的响应包含一个错误

我的代码:

namespace frontend\controllers;

use Yii;
use yii\rest\ActiveController;    

class CityController extends ActiveController
{
    public $modelClass = 'frontend\models\City';

    public function actions()
    {
        $actions = parent::actions();
         unset($actions['create']);
        return $actions;
    }    

    public function behaviors()
    {
        $behaviors = parent::behaviors();

        // remove authentication filter
        $auth = $behaviors['authenticator'];
        unset($behaviors['authenticator']);

       // add CORS filter
        $behaviors['corsFilter'] = [
            'class' => \yii\filters\Cors::className(),
        ];

        // re-add authentication filter
        $behaviors['authenticator'] = $auth;
        // avoid authentication on CORS-pre-flight requests (HTTP OPTIONS method)
        $behaviors['authenticator']['except'] = ['options'];

        return $behaviors;
    }    

    public function actionCreate()
    {
      echo 'Hi i\'m create!!';
    }
}    
和ajax请求:

$.ajax({
            url: "http://blog.dev/city", // our php file
            type: 'POST',
            contentType: false,
            cache: false,
            processData: false,
            data: {x: 'data_text'},
            success: function(data){
                console.log(data);
            },
            error: function (request) {
                console.log(request);
            }
        });    
在actionCreate中,我添加退出()问题已得到解决。
问题在哪里?我应该如何更改actionCreate?

请帮帮我。

客户端正在发送ajax请求,因此Yi2也应该像处理ajax请求一样处理该请求。您需要像这样更改代码:

<?php
...
public function actionCreate()
{
  if (Yii::$app->request->isAjax) {
      // DO SOMETHING
      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
      return [
          'message' => 'Hi i\'m create!!'
      ];
  }
}
$.ajax({
   url: '<?php echo Yii::$app->request->baseUrl. '/ads' ?>',
   type: 'post',
   data: {
              x: 'data_text', 
             _csrf : '<?=Yii::$app->request->getCsrfToken()?>'
         },
   success: function (data) {
      console.log(data.message);
   }

谢谢,但如果声明不起作用!为什么?我从react组件发送数据,但不发送数据,csrf也能正常工作。我是否必须遵循另一点?