2017-10-17 74 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,而不是回显它们。谢谢! –