2017-10-17 8 views
0

ここでインターネット/その他の質問で見つけた解決策を試した後、私のコードで問題を見つけることができません。私が必要とするのは、自分のビュー内のボタンをクリックすると、Yii2コン​​トローラ内のアクションがAjaxを通じて呼び出され、何らかのアクションが実行されるということです。しかし、私の現在のコードでは、ボタンをクリックしても何も起こらないようです。Ajaxを使用してボタンのクリックでYii2関数を呼び出す

次のように関連するコードがある...

ビュー:

(...) 
Html::button('Eliminar', ['data-confirm' => '¿Eliminar enunciado?', 'onclick' => ' 
    $.ajax({ 
     type: "POST", 
     url: "/evaluacion/eliminar-enunciado", 
     data: { 
      id: '.$enunciado->id.' 
     }, success: function(result) { 
      if(result == 1) { 
       $.pjax.reload({container: "#construccion-evaluacion"}); 
      } else { 
      } 
     }, error: function(result) { 
      console.log(\"server error\"); 
     } 
    }); 
']) 
(...) 

コントローラ:

(...) 
public function actionEliminarEnunciado($id) 
{ 
    Enunciado::findOne($id)->delete(); 
    if(Enunciado::findOne($id) != null) { 
     echo 1; 
    } else { 
     echo 0; 
    } 
} 
(...) 

明確化のためにいくつかの注意事項:
- コントローラファイルが呼び出されますEvaluacionController.php。
- $ enunciado-> id変数が正しく定義されており、有効な値を持っています。

アドバイスをいただければ幸いです。御時間ありがとうございます!

+0

Chromeを使用している場合は、F12キーを押し、[ネットワーク]タブをポイントし、ajax呼び出しの結果を確認します。おそらくあなたは '$ id'パラメタを定義していますが、あなたは' POST'メソッドでそれを送信しています。したがって、ajaxのURLを変更して 'id'を追加するか、関数宣言から' $ id'を削除し、 'POST'で' $ id'を取得します。 – Yupik

答えて

2

POSTリクエストの値を取得する必要があります。

if(isset($_POST['id'])) 
    $id = $_POST['id']; 
+1

これとYupikのコメントは私がそれを解決するのを助けました。私は実際にコントローラーにもう1つのタイプミスがあったことを指摘したいと思います。アクションは1または0を返し、エコーしません。ありがとう! –

関連する問題