0

私は次のようなモデルで2つの関数の結果を送信するコントローラーを持っています:

$data['waiting'] = $this -> queue_model -> waiting();
$data['beingseen'] = $this -> queue_model -> beingseen();
$this -> load -> view('studentqueue/studentqueue', $data);

私の見解では、データを表示するjqueryグリッドがあります。私の上司は、データベースに新しいデータが挿入されたときにそのテーブルを自動的に更新する必要があります。その場合、クエリの結果に影響します。

私はこのチュートリアルに従おうとしています

しかし、私は正確にデータが何であるかについて立ち往生しています。

私のコントローラーで$dataを送信していますが、それはajax呼び出しのデータとどのように統合されますか?

同じページに2つのデータグリッドがあり、どちらも非同期で更新する必要があります。

したがって、質問が何であるかを完全に明確にするために:

ビューに渡すコントローラーデータをajax呼び出しに統合して、テーブルが更新されるようにするにはどうすればよいですか。--2つのテーブルがあり、どちらもクラスIDは同じですが、必要に応じてテーブルIDが異なります。

私のテーブルのHTMLは次のとおりです。

<?php echo anchor('staff_controller/index', 'Return');?>
    <p class='error'>
        <font color="#ff0000">
            <?php echo $this->session->flashdata('reports');?>
        </font>
    </p>

    <h3>Students Waiting</h3>
            <table id='waiting' class='display'>
                <thead>
                <tr>
                    <th>ID</th>                       
                    <th>A Number</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Time Waiting</th>
                    <th>Reason for visit</th>
                    <th>Comments</th>
                    <th>Aid Year</th>
                    <th>Staff Comments</th>
                    <th>Options</th>
                </tr>
            </thead>
            <tbody>

                <?php $options = array("" => "", 'start' => 'Start Session', 'stop' => 'Student Not Present', 'abandon' => 'End Session', );
                foreach ($waiting as $row) 
                { 
                    ?>                
                <tr>
                    <td><?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'); ?></td>               
                    <td><?php echo anchor('studentqueue_controller/history/'.urlencode($row['anum']). '', htmlspecialchars($row['anum'], ENT_QUOTES, 'UTF-8'), 'target="_blank"'); ?></td>
                    <td><?php echo htmlspecialchars($row['first'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['last'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['SECOND'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['reason'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['studentcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['aidyear'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row['counselorcomments'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td>
                        <?php echo form_open('studentqueue_controller/counselorscreen/' .urlencode($row['id']). ''); ?>
                        <?php echo form_dropdown('options', $options, ""); ?>
                        <?php echo form_submit('submit', 'Submit'); ?>
                        <?php echo form_close(); ?>
                    </td>
                </tr>
                <?php
                 } ?>
            </tbody>    
        </table>

見られている学生

        <table id='beingseen' class='display'>
            <thead>
                <tr>
                    <th>ID</th>                       
                    <th>A Number</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Sign In Time</th>
                    <th>Staff Member</th>
                    <th>Start Time</th>
                    <th>Options</th>
                </tr>
            </thead>
            <tbody>
                <?php $options1 = array("" => "", 'continue' => 'Continue Session', 'terminate' => 'Terminate Session', );
                foreach ($beingseen as $row1) { ?>                 
                <tr>
                    <td><?php echo htmlspecialchars($row1['id'], ENT_QUOTES, 'UTF-8'); ?></td>              
                    <td><?php echo htmlspecialchars($row1['anum'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row1['first'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row1['last'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row1['signintime'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row1['fname'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($row1['starttime'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td>
                        <?php echo form_open('studentqueue_controller/counselorscreen/' .urlencode($row1['id']). ''); ?>
                        <?php echo form_dropdown('options', $options1, ""); ?>
                        <?php echo form_submit('submit', 'Submit'); ?>
                        <?php echo form_close(); ?>
                    </td>
                </tr>
                <?php } ?>
            </tbody>    
        </table>
4

3 に答える 3

2

これが私がそれをする方法です:

  1. ページの読み込みは、ビューを読み込むCIコントローラーを要求します

  2. ビューには、ajaxリクエストから返されたデータを保持するデータテーブルが含まれています(これには素晴らしいDataTablesプラグイン/拡張機能を使用します)

  3. コントローラにデータのajaxリクエストを処理する別のメソッドがあります(get_table_data_xhr())...このメソッドはビューをロードせず、Datatablesがテーブルにデータを入力するために使用するJSONオブジェクトをエコーするだけです。このメソッドへのリクエストは、ページが読み込まれた後、データを更新するためのトリガーで再度行われます。

DataTablesドキュメントへのリンクは次のとおりです。http ://www.datatables.net/ データのソースとしてAjaxリクエストを使用してこのメ​​ソッドを使用する例を次に示します:http ://www.datatables.net/release-datatables/ examples / data_sources / ajax.html

アップデート:

これは、DataTablesプラグインのjsonを返すもの/方法を示す私のajaxメソッドの1つからのスニペットです。

            ... // this is happening inside a loop that's assigning things to $data

            $data[] = array(
                'name' => $c->Name,
                'description' => $c->Description,
                'topics' => explode(';', $c->Topic__c),
                'start_date' => $c->StartDate,
                'end_date' => $c->EndDate,
                'sort_date' => $start_time->format('YmdH'),
                'dates' => $event_dates,
                'time' => $event_time,
                'delivery_method' => $c->Delivery_Method__c,
                'level' => $c->Levels__c,
                'url' => $c->Sign_Up_URL__c,
                'location' => $c->Location__c,
                'timezone' => $timezone
            );
        }
        $out['status'] = 'success';
        $out['data'] = $data;
    } else {
        $out['status'] = 'success';
        $out['data'] = array();
    }
}
header('Content-Type: application/json');
echo json_encode(array('aaData' => $out['data']));
于 2013-03-15T13:25:15.363 に答える
1

私はついにアプリケーションのこの部分を終了しました。独自のタイプの「更新」を使用する代わりに、先に進んでDataTablesの更新を使用しました。

私はこのドキュメントに従っただけで、すべてうまくいきました(ほとんどの場合)。

これは私を大いに助けました:

http://datatables.net/forums/discussion/14641/escaping-html-with-datatables

うまくいけば、誰かが私の過ちから学ぶことができます。

于 2013-04-02T13:30:04.343 に答える
0

私が正しく理解しているなら、あなたはこのコードを見ています:

 url: 'http://kyleschaeffer.com/feed/',
 data: { postVar1: 'theValue1', postVar2: 'theValue2' },

そして、どのようなデータが必要か疑問に思いますか?URLがどうあるべきかということに集中する必要があると思います。以来

  $data['waiting'] = $this -> queue_model -> waiting();
  $data['beingseen'] = $this -> queue_model -> beingseen();

コントローラ内のより広範な関数内にある可能性があります。新しい更新リクエストに対して、これら2つのデータのみを具体的に返す関数を作成する必要があります(http://mydomain.com/mycontroller/myupdatefunctionなど)。したがって、データを投稿するのではなく、データを要求するだけなので、GET要求を実行する必要があります。たぶん、この例はさらに役立つでしょう。

于 2013-03-15T13:27:56.090 に答える