我正在尝试在我的codeigniter中创建一个名为“like”的投票。我使用的方法是我在http://www.technicalkeeda.com/codeigniter-tutorials/voting-system-using-jquery-ajax-and-php-codeigniter-framework
中找到的方法并且更新在数据库上成功运行,但问题是因为视图中没有显示而输出的文本来自localhost“抱歉无法更新”。当我刷新页面时,“喜欢”的结果显示出来。
这是控制器:
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();
}
以下是视图:
<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('Sorry Unable to update..');
同
url: "localhost/latihan/login";
但是它没有用......感谢您的帮助
答案 0 :(得分:1)
问题出在你的控制器函数voteme
中,在回显status
之后你不应该使用redirect
,如果你使用重定向,那么它将返回你的主页html,状态为true
。
因此,您可以使用is_ajax_request(),如果ajax请求为true,则使用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()
答案 1 :(得分:0)
试试这个:
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";
}
return $status
}
答案 2 :(得分:0)
要使用javascript重定向,您可以使用'window.location.href':
window.location.href = "localhost/latihan/login";