0

Web サービスの codeignter で xmlprc サーバーを使用しています。私のアプリケーションの流れは、xmlrpcサーバーメソッドにパラメーターを渡す必要があり、それがjs関数でパラメーターを設定する別のコントローラークラスメソッドを呼び出す必要があり、そのjsメソッドが同時に呼び出されることです。私が直面している問題は、xmlrpc サーバー メソッドからコントローラー クラス メソッドを呼び出し、xmlhttprequest を使用して取得できるサーバーの親メソッドへの応答を取得することです。

私のxmlrpcサーバーメソッドは次のとおりです。

 function update_p($request) {
 $parameters = $request->output_parameters();
 $this->session->set_userdata(array("portfolio" =>$parameters['0']["portfolio"]));
 $this->session->set_userdata(array("filter" =>$parameters['0']["filter"]));

          $url  = base_url("ControllerClass/update_p?".$parameters['0']["portfolio"].'&'.$parameters['0']["filter"]);
           header("Location: $url");

    $xml_rpc_rows=array("portfolio"=>$parameters['0']["portfolio"],"filter"=>$parameters['0']["filter"]);



        $response = array(
            $xml_rpc_rows,
            'struct');
         $this->xmlrpc->send_response($response);



    }

コントローラ クラス メソッド:

public function update_p() {
        $loginid = $this->session->userdata('loginid');
        if(!isset($loginid)){
            die;
        }
        error_reporting(E_ERROR);
        if (time()>$this->session->userdata('expire')) { redirect("/dashboard/logout?expired=Y","location",401); die; }

        $out='';

        $request="USER ".$loginid.($this->session->userdata('isMobile')?"@mobile":"")."\n";


        if(isset($_GET["portfolio"])) {
            $portfolio=trim($_GET["portfolio"]);
            $request.='ECHO "LISTP":'."\nLISTP0 #".$portfolio;
            if(isset($_GET["filter"])) {
                $filter=trim($_GET["filter"]);
                $request.=" -".$filter;
            }
            if(isset($_GET["sort"])) {
                $sort=trim($_GET["sort"]);
                if ($sort>=1024) $request.=" -s".($sort&1023);
                else $request.=" -S".$sort;
            }
            $ph = isset($_GET["first"]);
            if ($ph) { 
                $this->load->model('Model');
                $resultArray = $this->Model->getData($this->session->userdata('loginid'),$this->session->userdata('isMobile')?'mobile':'default','listp');
                $request.=" ".$resultArray[0]['listp'];
            }
            $request.="\nECHO ,\n";
            if(isset($_GET["watch"])) {
                $portfolio=trim($_GET["watch"]);
                if ($ph)
                    $resultArray = $this->Model->getData($this->session->userdata('loginid'),$this->session->userdata('isMobile')?'mobile':'default','watch');
                $request.='ECHO "watchl":'."\nLISTP1 #".$portfolio." -WL ".($ph?$resultArray[0]['watch']:"")."\n";
                $request.='ECHO ,"watchs":'."\nLISTP1 #".$portfolio." -WS\nECHO ,\n";
            }
        }
        $request.="RISk\nECHO ,\nPnL\n";

        if ($result=$this->getData($request."BYE\n")) {
            if (result!='') $out=$result."\n";
        }

        ob_start('ob_gzhandler');
        echo "{".$out."}";
        ob_end_flush();

    }

サーバーメソッドでコントローラーメソッドの結果を取得する方法がわかりません。これに光を当てることができる人なら誰でも大歓迎です。ありがとうございました。

4

1 に答える 1