0

JavaScriptを使用して編集、削除するエントリを計算するビューがあります。IDは、チェックボックスにチェックを入れて計算され、編集または削除するためにコントローラーメソッドに送信する必要がある配列に保存されます...理想的には変数をViewからCodeigniterのコントローラーに送信すべきではないことをどこかで読みました。どうすれば別の方法で行うことができますか?

意見

function checkedAll() {
    var rowlength=document.getElementById("check").rows.length; 
    z=document.getElementById("check").getElementsByTagName("input")[0].checked;

    for(var i=1;i<rowlength-1;i++)
    {
        document.getElementById("check").getElementsByTagName("input")[i].checked = z; 
    }
}

function del(){
    var rowlength=document.getElementById("check").rows.length;
    var id = new Array();

    for(var i=1;i<rowlength-1;i++)
    {
        var t = document.getElementById("check").getElementsByTagName("input")[i].checked; 
    var y = document.getElementById("check").rows[i].cells;
        id[i]=y[0].innerHTML;
    }   
}
</script>
</head>

<body>
     <table id="check" >
        <tr>
            <th>S.No</th> 
            <th>Name</th> 
            <th>Age</th> 
            <th>Qualification</th> 
            <th> <input type="checkbox" onclick='checkedAll()'/> </th>
        </tr>

        <?php 
        $check=0; 
        $flag=0;    
        $my_checkbox=array();

        foreach($forms as $ft): ?> 
            <tr id="<?php echo $check;?>" class="<?php echo $d ?>"> 
                <td > <?php echo $ft['serial']; ?> </td> 
                <td> <?php echo $ft['name'] ;?></td> 
                <td> <?php echo $ft['age'] ;?></td> 
                <td> <?php echo $ft['qualification'] ;?></td> 
                <td> <input type="checkbox" /></td>
            </tr>
            <?php $check++ ?>             
        <?php endforeach ?>

        <tr> 
            <td colspan="5" align="center"> 
                <button type="button" name="create" id='but' value="Create" 
                        onclick = "Redirect();" >Create </button>  
                <button type="button" name="edit" onclick="edit();" id='but' >Edit </button> 
                <button type="button" name="delete" id='but' onclick="del(); " >Delete </button>
            </td>
        </tr>   

    </table> 

    <form action="<?php $this->load->helper('url');echo site_url('form/edit');?>" method="POST"  id="myForm" >
        <input type="hidden" name="snap" id="snap">
    </form> 
</body>

4

1 に答える 1

0

この配列を受け入れて処理するコントローラーでメソッドを作成し、jquery ajax を使用してこのデータをコントローラーに送信します... リロードの必要はなく、直接呼び出しに問題はありません。

一方、直接呼び出されるコントローラーメソッドを作成し、配列を処理した後、ビューにリダイレクトしてそこにとどまることをエミュレートすることができます。これは 5 ~ 6 歳のアプローチであるため、お勧めしません。

これに関する詳細な指示が必要な場合は、コメントを残してください。

コード例は次のとおりです。

var data = //your variable to be sent
$.ajax({
    type: "POST",
    url: "/controller/method",
    data: data,
    success: function(result) {
        // data is returned by controller

    },
    error: function(){
        console.log('ERROR');
        //for errors thrown by PHP exceptions and other backend features
        //or you can return result also and fetch an exception if you go for try - catch, which I highly recommend
    }
});
于 2013-03-03T00:28:04.853 に答える