Yii 控制器方法从视图按钮调用


Yii controller method call from view button

我一直在阅读很多关于这个问题的信息,但我找不到适合我的问题的解决方案。

Yii 框架中,我需要在从视图中单击按钮后执行控制器方法。我试图用Javascript做到这一点,但它不起作用。我不需要从视图中更改任何内容,只需将代码执行到控制器中即可。在控制器执行完成后,我必须获取返回变量以在视图上显示一些答案。

ajaxButton in yii:

echo CHtml::ajaxButton('ButtonName',Yii::app()->createUrl('controller/action'),
                array(
                    'type'=>'POST',
                    'data'=> 'js:{"data1": val1, "data2": val2 }',                        
                    'success'=>'js:function(data){ alert(data); /* */}',
                    'update'=>'selectorNameToBeUpdated',           
                ),array('class'=>'someClass',));
     onclick="callController();"

使用 ajax 使用它,创建一个函数并使用 onclick 事件通过 javascript 调用它。

 <script>
  function callController(){
   $.post("index.php?r=controllerName/functionName, function (data) {
  });
 }
 </script>

最后,我得到了一个解决方案,混合了您的建议。此外,我正在处理一个第三方项目,代码很混乱,实际上控制器不在正确的目录中......无论如何,这是我的解决方案:

在我看来,调用我的 JavaScript 函数

onclick="myMethod(myVar");

然后:

<script>
function myMethod(Var) {
$.ajax({
    type: "POST",
    url:    "<? echo Yii::app()->createUrl('MyController/MyControllerMethod'); ?>",
    data:  {val: Var},
    success: function(msg){
        alert("Operation result: " + msg)
    },
    error: function(xhr){
        alert("failure"+xhr.readyState+this.url)
    }
});
}
</script>

在我的控制器中,刚刚做了一些操作并返回回显:

public function actionMyControllerMethod() {
   // some operations
   echo $result;
}