我正在尝试在名为“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/