繁体   English   中英

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

[英]Yii controller method call from view button

我已经阅读了很多关于此的内容,但是找不到适合我问题的解决方案。

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

yii中的AjaxButton

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>

在我的控制器中,执行了一些操作并返回echo:

public function actionMyControllerMethod() {

   // some operations

   echo $result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM