2017-10-17 70 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調用的結果。顯然它的'400 - 錯誤的請求',因爲在行動中你定義了參數'$ id',但是你通過'POST'方法發送它。因此,改變ajax的URL並添加'id',或者從函數聲明中移除'$ id',並通過'POST'獲取'$ id'。 – Yupik

回答

2

您需要獲取POST請求的值;

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

這和Yupik的評論幫助我解決了它。我想指出,我實際上在控制器中還有一個錯字:操作應該返回1或0,而不是回顯它們。謝謝! –