在yii2中保存到数据库

时间:2016-09-22 20:17:30

标签: php ajax yii2

我正在尝试使用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]"

1 个答案:

答案 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