Php 更改yii2api操作
我使用yii2(2.0.13)。使用ajax发送数据时,返回的响应包含一个错误 我的代码: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(
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也能正常工作。我是否必须遵循另一点?