我正在尝试使用ajax保存到yii2中的数据库,但我收到错误。我只想将“up”的值或速率插入到数据库中,我不想使用表单,只需单击按钮即可。
这是我的控制器
public function actionThumbs()
{
$thumbs = new Thumbs;
$thumbs->user = Yii::$app->user->identity->email;
$thumbs->topic_id = Yii::$app->getRequest()->getQueryParam('id');
$thumbs->rate = $_POST["rate"];
if ($thumbs->load(Yii::$app->request->post()) ) {
$thumbs->load($_POST);
$thumbs->save();
return $this->redirect(['blog', 'id' => Yii::$app->getRequest()->getQueryParam('id')]);
}
return $this->redirect(['blog','id' => Yii::$app->getRequest()->getQueryParam('id')]);
}
这是我的这是我的ajax文件
$("#mys").click(function() {
var rate = "up";
$.ajax({
type: 'POST',
url: 'vot/frontend/web/index.php?r=site%2Fthumbs',
data: 'rate='+rate,
success: function (rate) {
alert("test");
},
error: function (exception) {
alert(exception);
}
});
});
视图
<div>
<?= Html::Button('ups', ['class' => 'btn btn-primary', 'name' => 'mys' ,'id'=>'mys']) ?>
</div>
我收到此警告错误
The page at localhost says":
"[object Object]"
答案 0 :(得分:2)
默认情况下,Yii2控制器不接受没有_csrf保护的POST请求,因此这里有两种方法:
1 - 禁用csrf:
public function actionThumbs() {
$this->enableCsrfValidation = false;
//your code here
}
2 - 使用_csrf令牌通过ajax发送帖子请求:
在layout/main.php
文件中,输入:<?= Html::csrfMetaTags() ?>
在你的&#34; ajax&#34;之前代码,请致电:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
//Your ajax code here