0

codeigniter を phpgrid と統合していますが、行の値を phpgrid (ビュー A) から別のビュー (ビュー B) に javascript と codeigniter コントローラーを介して渡すのに問題があります。

PHPGRID (ビュー A) に次のような仮想列があります。

$col_formatter = <<<COLFORMATTER
function(cellvalue, options, rowObject, rowid){ 
    var sessid = rowObject[0];

    return '<input type="button" value="View" onclick="btnView('+sessid+')">';
} 
COLFORMATTER;

およびVIEW Aのjavascript:

function btnView(sessid){
    var dataRow = {
        sessid:sessid,
    };
    $.ajax({
        type:"POST",
        url: "<?php echo base_url()."index.php/main/tes"; ?>",
        data: dataRow,
        success: function(msg){
        }
    });
    return false;
}

Codeigniter コントローラーで:

public function tes(){
    $data['sessid'] = $_POST['sessid']; 
    $this->load->view('view_b', $data);
}

ビューを読み込めないようです。応答を知るために Mozilla の Firebug を使用しました。応答が view_b ビューのコードであることは事実ですが、どうすればそのビューに切り替えることができますか?

4

3 に答える 3

2
//Your are using ajax for some operation and want to reload the view page the you can test these options:
1) take a div in current view page and assing ajax retrun message to that div

function btnView(sessid){
var dataRow = {
    sessid:sessid,
};
$.ajax({
    type:"POST",
    url: "<?php echo base_url()."index.php/main/tes"; ?>",
    data: dataRow,
    success: function(msg){
         $("#divid").html(msg);
    }
});
return false;
}


//Or 2)just redirect to your view page again

function btnView(sessid){
var dataRow = {
    sessid:sessid,
};
$.ajax({
    type:"POST",
    url: "<?php echo base_url()."index.php/main/tes"; ?>",
    data: dataRow,
    success: function(msg){
        window.location.href=path to your view page;//<?php echo base_url()."index.php/controller/function"; ?>
    }
});
return false;
}
于 2013-07-19T04:53:52.553 に答える
0

私が正しく理解している場合は、VIEW A から VIEW B に移動し (ウィンドウの場所の実際の変更を意味します)、値を VIEW B に渡して、動的コンテンツを生成できるようにします。AJAX はページの変更をトリガーせず、代わりに応答のマークアップ/テキストを文字列として返すため、ここでは解決策ではありません。

しかし、Codeigniter を使用して、リンクの uri の一部として送信できるコントローラー メソッドの引数を使用するのがより簡単な方法です。

HTML

<a href="http://example.com/index.php/main/tes/{sessid}">View</a>

Javascript を使用してマークアップを生成しているため、次のようなものが必要になります。

return '<a href="<?php echo site_url('main/tes')?>/'+sessid+'">View</a>';

*ボタンの代わりにリンクが表示されますが、CSS を使用して任意の方法でスタイルを設定できます。

次のようにコントローラーで値を取得します。

PHP

public function tes($sessid){
    $data['sessid'] = $sessid; 
    $this->load->view('view_b', $data);
}

ものすごく単純。2 番目のオプションは、ボタンの代わりにフォームを使用して、GET または POST を使用して値を送信することです。フォームは、送信されるたびにページの変更をトリガーします。

HTML

<form action="http://example.com/index.php/main/tes" method="get">
    <input type="submit" value="{ssid}" name="sessid" />
</form>

再びJavaScriptを使用して:

return '<form action="<?php echo site_url('main/tes')?>" method="get">'
       +'<input type="submit" value="'+sessid+'" name="sessid" />'
       +'</form>';

コントローラーで値を取得するには、次のようにします。

PHP

public function tes(){
    $data['sessid'] = $_GET['sessid']; //OR $_POST['sessid']
    $this->load->view('view_b', $data);
}
于 2013-07-24T08:03:36.507 に答える
0

javascript から codeigniter コントローラーに変数を渡すのは次のとおりです。

function btnView(sessid){
    window.location = "printvo/"+sessid;
}

変数を渡す方法がわからないため、ajaxを使用していました。変数を渡すには括弧を使用しているといつも思っていました。そしてそれはうまくいきませんでした。

于 2013-07-26T01:14:53.877 に答える