簡體   English   中英

帶有Jquery和CodeIgniter框架的Ajax

[英]Ajax with Jquery and CodeIgniter frameworks

我有一個控制器,可以在模型中發送兩個函數的結果,如下所示:

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

在我看來,我有一個顯示數據的jquery網格。 當在數據庫中插入新數據時,我的老板需要該表自動更新,在這種情況下會影響查詢結果。

我正在嘗試按照本教程

但是我對確切的數據感到困惑。

在我發送$ data的控制器中,它如何與ajax調用中的數據集成?

我在同一頁面上有兩個數據網格,它們都需要異步更新。

因此,為了明確說明問題是什么:

如何將要傳遞給視圖的控制器數據集成到ajax調用中,以便更新我的表。 -我有兩個表,它們的類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>

這是我的方法:

  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/例子/data_sources/ajax.html

更新:

這是我的一種ajax方法的片段,顯示了它如何/如何為DataTables插件返回json:

            ... // 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']));

我終於完成了應用程序的這一部分。 我沒有使用自己的“更新”類型,而是使用了DataTables更新。

我只是遵循了這份文檔,並且一切正常(大部分情況下)。

這對我有很大幫助:

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

希望有人可以從我的錯誤中學到東西。

如果我理解正確,那么您正在看以下代碼:

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

想知道應該使用什么數據? 我認為您需要關注URL應該是什么。 以來

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

可能在您控制器的更廣泛功能內。 您將需要創建一個函數,該函數專門針對新的更新請求僅返回這兩部分數據(例如:http://mydomain.com/mycontroller/myupdatefunction)。 因此,您要執行GET請求,因為您不是在發布數據,而只是在向后請求數據。 也許這個例子會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM