javascript - Codeigniter - 在 codeigniter 中创建投票系统

标签 javascript php jquery codeigniter

我正在尝试在名为“like”的 codeigniter 中创建投票。我使用这种方法,我刚刚在 http://www.technicalkeeda.com/codeigniter-tutorials/voting-system-using-jquery-ajax-and-php-codeigniter-framework 中找到

并且更新在数据库上成功运行,但问题是 View 中的结果没有显示,输出是来自本地主机的文本“抱歉无法更新”。当我刷新页面时,“喜欢”的结果出现了。

这是 Controller :

function voteme(){      
    $id_vote=  $this->input->post('id_vote');
    $upOrDown=  $this->input->post('upOrDown');
    $status ="false";
    $updateRecords = 0;     
    if($upOrDown=='upvote'){
        $updateRecords = $this->home_model->updateUpVote($id_vote);
    }
    if($updateRecords>0){
        $status = "true";
    }
    echo $status;
    $data['id_vote'] = $id_vote;
    redirect ('home',$data);
}

这是模型:

function updateUpVote($id_vote){
    $sql = "UPDATE vote set like = like+1 WHERE id_vote =?";
    $this->db->query($sql, array($id_vote));
    return $this->db->affected_rows();
}

这是 View :

<button class="btn btn-success voteme" id="3_upvote"><span id="<?php echo $data['id_vote']?>_upvote_result" ><?php echo $data['like']?></span> <b>Like</b></button>

这是javascript:

<script type="text/javascript">
$(document).ready(function(){
      $(".voteme").click(function() {
        var id_vote = this.id;
        var upOrDown = id_vote.split('_'); 
        $.ajax({
            type: "post",
            url: "http://localhost/ngelol/home/voteme",
            cache: false,               
            data:'id_vote='+upOrDown[0] + '&upOrDown=' +upOrDown[1],
            success: function(response){                
                try{
                    if(response=='true'){   
                        var newValue = parseInt($("#"+id_vote+'_result').text()) + 1;            
                        $("#"+id_vote+'_result').html(newValue);
                    }else{
                        alert('Sorry Unable to update..');
                    }
                }catch(e) {     
                    alert('Exception while request..');
                }       
            },
            error: function(){                      
                alert('Error while request..');
            }
         });
    });
});

如何在不刷新页面的情况下得到这个点赞结果?

非常感谢....

更新:

我有新的问题伙计们,有谁知道如何在 javascript 中重定向页面。我的意思是,要使用投票,我们需要先登录,然后我替换 alert('抱歉无法更新..');url: "localhost/latihan/login"; 但是没用...感谢之前的帮助

最佳答案

问题出在你的 Controller 函数 voteme 回显 status 之后你不应该使用 redirect,如果你使用 redirect 然后它会返回你的家状态为 true 的页面 html。 所以,你可以使用 is_ajax_request() ,如果 ajax 请求为真则使用 exit; 否则 redirect() 就像,

function voteme(){      
    $id_vote=  $this->input->post('id_vote');
    $upOrDown=  $this->input->post('upOrDown');
    $status ="false";
    $updateRecords = 0;     
    if($upOrDown=='upvote'){
        $updateRecords = $this->home_model->updateUpVote($id_vote);
    }
    if($updateRecords>0){
        $status = "true";
    }
    echo $status;
    // check for ajax request
    if(! $this->input->is_ajax_request()){ // if not ajax request
        $data['id_vote'] = $id_vote;
        redirect ('home',$data);// redirect it
    }
    exit;
}

甚至你的referral link没有使用 redirect()

关于javascript - Codeigniter - 在 codeigniter 中创建投票系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27631824/

相关文章:

JQuery 分割逗号与 ashx 处理程序分隔

javascript - 是否有任何用于嵌入 C++ 的 HTML5 Canvas 实现

javascript - 我的 AngularJS 模型仅在单击按钮两次时更新

php - 了解 php 成员(member)系统中的错误

php - 防止mysqli中的sql注入(inject)

Jquery,从中心旋转

asp.net-mvc-3 - ASP.NET MVC3 和 jquery.getJSON 不发出请求

javascript - 使用正则表达式以逗号分隔的 Rails 自动完成标签

javascript - Bootstrap Modal 仅触发 Backdrop

php - 无法添加或更新子行: a foreign key constraint fails