2016-09-22 18 views
0

ajaxを使用してyii2のデータベースに保存しようとしていますが、エラーが発生しています。私はちょうどデータベースに "アップ"されている値またはレートを挿入したいと思うし、ボタンをクリックするだけでフォームを使いたくない。yii2のデータベースに保存

は、これはこれは私のコントローラ

 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]" 
デフォルトYii2コン​​トローラによって
+0

'if'の前後に' var_dump($ thumbs); 'を作成します。オブジェクトの値は何ですか? –

+0

''警告(例外) ''の代わりに '' console.log(例外) '' 'を使用し、ブラウザ開発ツールを使ってこの変数の内容を調べます。 – cronfy

+0

ここで 'Yii :: $ app-> getRequest() - > getQueryParam( 'id');を使用している' id'パラメータがないことに気付きました。 ($ thumbs-> load(Yii :: $ app-> request-> post())){'と' $ thumbs-> load($ _ POST); 'どちらも同じですが、実際に何もしていません。私のアドバイス:まずあなたの行動が適切に働いていることを確認してから、それをajaxで使用してください。 – leninhasda

答えて

2

は_csrf保護なしでPOSTリクエストを受け付けませんので、2通りの方法がここにあります

1 - CSRFを無効にします。

public function actionThumbs() { 
    $this->enableCsrfValidation = false; 
    //your code here 
} 

2 - _csrfトークンでAJAXを経由してPOSTリクエストを送信します:あなたのlayout/main.phpファイルで は、この置く:あなたの "AJAX" のコードの前<?= Html::csrfMetaTags() ?>

を、これを呼び出す:

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') 
    } 
}); 
//Your ajax code here 
+0

まだ私に同じエラーが出ています。要素を調べると、(匿名関数を参照)\t @ \t top.js:9 – arinze

関連する問題