簡體   English   中英

Codeigniter加載ajax請求

[英]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.

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