[英]Codeigniter loading ajax request
試圖在投票系統中添加一些Ajax功能,但無法正常工作。 我想向數據庫發送發布請求並更新計數值。 我遇到的問題是,我似乎無法在MVC中獲得Ajax請求的支持。
我確實想保留MVC結構。
jQuery代碼是:
<script>
$( document ).ready(function() {
$( "#vote li a" ).each(function( index ) {
$(this).click(function(){
$.ajax = ajax();
var id = $(this).attr('data-scenario-id');
var value = $(this).attr('data-value');
$.ajax({
url: "ajax-vote.php",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});
return false;
});
});
});
當前駐留在ajax-vote.php中的php代碼是:
$id = isset($_GET['id']) ? $_GET['id'] : null;
$value = isset($_GET['value']) ? $_GET['value'] : null;
$query = $this->db->query('SELECT count FROM total_counts WHERE scenario_id = ' . $id . ' AND interaction_id = ' . $value);
$row = $query->row();
$count = $row->name;
$count++;
$query = $this->db->query('UPDATE total_counts SET count = ' . $count);
$query = $this->db->query('SELECT count FROM total_counts WHERE scenario_id = ' . $id . ' AND interaction_id = ' . $value);
$row = $query->row();
$count = $row->name;
switch ($value) {
case 1:
$text = 'OK '. $count;
break;
case 2:
$text = 'NOT OK'. $count;
break;
case 3:
$text = 'ABUSE'. $count;
break;
}
echo '<a href="#" data-scenario-id="'.$id.'" data-value="'.$value.'">'. $text .'</a>';
提前致謝。
如果您使用的不是codeigniter
,則必須在URL中提供控制器路徑。 我假設您的控制器名稱是ajax-vote.php,而不是您的ajax代碼
$( document ).ready(function() {
$( "#vote li a" ).each(function( index ) {
$(this).click(function(){
$.ajax = ajax();
var id = $(this).attr('data-scenario-id');
var value = $(this).attr('data-value');
$.ajax({
url: "<?php echo base_url(); ?>ajax-vote",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});
return false;
});
});
});
您必須將代碼放入控制器,而不是簡單的php文件中! 然后,您可以像這樣將javascript的codeigniters site_url路徑傳遞給javascript:
<script> var site_url = '<?php echo site_url()?>';</script>
您必須在標題視圖中執行此操作。
然后稍后在ajax調用中,您可以使用此變量來構建路徑:
$.ajax({
url: site_url + "ajaxcontroller/vote",
cache: false,
data: { id: id, value: value }
})
.done(function( html ) {
$(this).html( html );
});
現在,您將php和javascript分開了。
當然,您必須做一個擴展CI_Controller的AjaxController,並將代碼放入名為“ ajax”的函數中(或您想要的任何名稱,只需確保使用與js調用中相同的名稱)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.