我已经阅读了很多相关内容,但我无法找到解决问题的正确方法。
在 Yii 框架中,我需要在视图中点击按钮后执行控制器方法。我尝试用Javascript做到这一点,但它没有用。 我不需要从视图中更改任何内容,只需将代码执行到控制器中即可。在控制器执行完成后,我必须得到返回变量以在视图上显示一些答案。
答案 0 :(得分:2)
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',));
答案 1 :(得分:1)
onclick="callController();"
使用ajax使用它,创建一个函数并使用onclick事件通过javascript调用它。
<script>
function callController(){
$.post("index.php?r=controllerName/functionName, function (data) {
});
}
</script>
答案 2 :(得分:0)
最后,我得到了一个解决方案,混合了你的建议。此外,我正在从事第三方项目并且代码非常混乱,实际上控制器不在正确的目录中......无论如何,这是我的解决方案:
在我看来,请调用我的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;
}