[英]Yii controller method call from view button
我已经阅读了很多关于此的内容,但是找不到适合我问题的解决方案。
在Yii框架中,我需要从视图中单击按钮后执行控制器方法。 我试图用Javascript来做到这一点,但是它不起作用。 我不需要从视图中进行任何更改,只需将代码执行到控制器中即可。 控制器执行完毕后,我必须获取return变量以在视图上显示一些答案。
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.