0

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>
4

2 に答える 2

1

そのためのアクションを書くことをお勧めします。その中にロジックがある場合はtest()、使用できるようにするために他のアクションが必要です。

それを独自のアクションにする理由はいくつかあります。

  • プロキシを経由せずに、アクションの結果を直接テストできます。
  • JSONを返す必要があるかHTMLを返す必要があるかに応じて、コンテキスト切り替えを利用できます
  • これ、AJAXを介してヒットしようとしているアクションであるため、非表示にする必要はありません。

すべてのアクションが独自の本格的なページである必要はないことを忘れないでください。必ず行うべきことの1つは、このアクション内のビューの自動レンダリングを無効にして、ビューが見つからないことについて文句を言わないようにすることです。

于 2011-07-29T16:20:31.523 に答える
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;
    }
}

このように考えてください;)

于 2011-07-28T09:46:39.370 に答える