2017-06-02 91 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改變或作出其他陳述

就是這樣