2017-06-02 158 views
1

我想更新我的用户表中的状态 - 当用户点击一个按钮我用ajax发送它到php页面,但在响应页面重新加载,因为我用`位置.reload();.有没有办法让我的按钮改变其状态,而无需重新加载页面?php + ajax没有页面刷新

的按钮:

<i data="<?php echo $row['id'];?>" class="status_checks btn <?php echo ($row['payment_status'])? 'btn-success' : 'btn-danger'?>"><?php echo ($row['payment_status'])? 'Paid' : 'Unpaid'?></i> 

PHP更新数据库

<?php 
extract($_POST); 
$user_id=$db->real_escape_string($id); 
$status=$db->real_escape_string($status); 
$sql=$db->query("UPDATE users SET payment_status='$status' WHERE id='$id'"); 
echo $sql; 

?> 

最后,jquery的

<script type="text/javascript"> 
$(document).on('click','.status_checks',function(){ 
var status = ($(this).hasClass("btn-success")) ? 'Unpaid' : 'Paid'; 
var msg = (status=='Unpaid')? 'Unpaid' : 'Paid'; 
if(confirm("Are you sure to "+ msg)){ 
    var current_element = $(this); 
    url = "update.php"; 
    $.ajax({ 
    type:"POST", 
    url: url, 
    data: {id:$(current_element).attr('data'),status:status}, 
    success: function(data) 
     { 
      location.reload(); 
     } 
    }); 
    }  
}); 
</script> 
+2

而不是重装调整'div'或任何元素的值您所使用的显示状态 – RST

回答

0

echo $sql;将返回0或1

您可以更新类的按钮不含)重装作为

success: function(data) 
     { 
      if(data == 1) // success 
      { 
      $('.status-checks').each(function(){ 
       if($(this).attr(data) == $(current_element).attr('data')) 
       { 
        $(this).addClass('btn-success'); 
        $(this).text('Paid'); 
       } 
      }) 
      }else // failed 
      { 
      $('.status-checks').each(function(){ 
       if($(this).attr(data) == $(current_element).attr('data')) 
       { 
        $(this).addClass('btn-danger'); 
        $(this).text('Unpaid'); 
       } 
      }) 
      } 
     } 
    }); 
+0

它工作但有错误。当你点击按钮来更新它时,首先改变状态,而不是按钮的颜色只是文本,当你点击它时,第二次它不会工作,即改变状态,当它改变状态时,它会影响所有按钮相同的颜色。请问,你认为可能是什么问题。 –

+0

检查我更新的代码 – Rahul

+0

它没有工作。请你知道更好的解决方案吗? –

0

则必须更换location.reload(用if和else if(数据)statment,对于如//按钮值改变别人//按钮值Don “T改变或作出其他陈述

就是这样