假设我在IndexController中有一个名为test()的公共函数:
public function test(){
//some code here
}
在index.phtml视图文件中,我想使用JQUERY AJAX来调用test()函数但不知道这个。
代码:
<a href="javascript:void(0)" onclick="callTestFunction()">Click me to call test() function()</a>
<script>
callTestFunction = function(){
$.ajax({
type: "POST",
Url: ***//WHAT SHOULD BE HERE***
Success: function(result){
alert('Success');
}
});
}
</script>
答案 0 :(得分:1)
public function ajaxproxyAction(){
if (is_callable($_REQUEST['function_name'])) {
return call_user_func_array($_REQUEST['function_name'], $_REQUEST['function_params'])
}
}
<script>
callTestFunction = function(){
$.ajax({
type: "POST",
Url: '/controller/ajaxproxy/',
data: { function_name: 'echo', function_params: 'test' }
Success: function(result){
alert('Success');
}
});
}
</script>
public function ajaxproxy2Action(){
if (method_exists($this, $_REQUEST['function_name'])) {
$retval = call_user_func_array(array($this, $_REQUEST['function_name']), $_REQUEST['function_params']);
echo json_encode(array('function_name' => $_REQUEST['function_name'], 'retval' => $retval));
die;
}
}
想一想这种方式;)
答案 1 :(得分:1)
我建议为它写一个动作。如果test()
内部存在逻辑,您需要其他操作才能使用,那就是因素。
将其作为自己的行动有几个原因:
请记住,并非每个动作都必须是自己的完整页面。确保您做的一件事是禁用此操作中的视图的自动呈现,因此它不会抱怨无法找到它。