[英]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>
這是我的方法:
頁面加載請求用於加載視圖的CI控制器
視圖包含數據表,這些數據表將保存從ajax請求返回的數據(為此,我們使用了很棒的DataTables插件/擴展名)
我在控制器中有一個單獨的方法來處理對數據的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.