2017-07-07 74 views
0

我有一個基於從MySQL數據庫構建的HTML表的bootstrap-table.js表。請參閱代碼:爲什麼我的表沒有在ajax調用後更新?

<table id="table2" class="table table-striped table-hover table-no-bordered" 
data-toggle="table" 
data-search="true" 
data-pagination="true" 
data-page-size="25" 
data-show-refresh="true" 
data-url="stemmen.php" 
data-side-pagination="client" 
data-unique-id="id" 
>           <thead> 
<tr> 
    <th data-field="id" data-visible="false">ID</th> 
    <th data-field="timestamp">datum &amp; tijd</th> 
    <th data-field="email">e-mailadres</th> 
    <th data-field="stem">stem</th> 
    <th data-formatter="operateFormatter" data-events="operateEvents"></th> 
</tr> 
</thead> 
</table> 

正如您在最後一欄中看到的那樣,有一個按鈕可以刪除該行。這會觸發一個ajax腳本。

function operateFormatter(value, row, index) { 
    return [ 
     '<button class="btn btn-xs btn-danger voteremove"><i class="fa fa-trash"></i></button>' 
    ].join(''); 
}; 

window.operateEvents = { 
     'click .like': function (e, value, row, index) { 
     alert('You click like icon, row: ' + JSON.stringify(row)); 
     console.log(value, row, index); 
    }, 
    'click .edit': function (e, value, row, index) { 
     alert('You click edit icon, row: ' + JSON.stringify(row)); 
     console.log(value, row, index); 
    }, 
    'click .voteremove': function (e, value, row, index) { 
     var id = [row.id]; 
     if(confirm("Weet je zeker dat je deze stem wilt verwijderen?")){ 
     var $table = $(this).closest('table').attr('id'); 
       $.ajax({ 
        type: 'POST', 
        url: 'functions.php?action=removeVote', 
        data: 'vote_id=' + id, 
        cache: false, 
        success: function() { 
         $($table).bootstrapTable('remove', { 
          field: 'id', 
          values: [row.id] 
         }); 


         $(formMessages).removeClass('alert-danger'); 
          $(formMessages).addClass('alert-success'); 
         $(formMessages).text('succesvol verwijderd'); 
         $(formMessages).show(); 

        }, 
        error: function(){ 
          $(formMessages).removeClass('alert-success'); 
          $(formMessages).addClass('alert-danger'); 
         $(formMessages).text('er is een fout opgetreden!'); 
         $(formMessages).show(); 
        } 
       }); 
     } 
    } 
}; 

現在我的問題。 ajax動作被觸發並且表現良好,消息被顯示,但該行不會從表中刪除,除非刷新頁面。

感謝您的幫助提前!

+0

進入關於解決你提到我想使一個不起眼的問題和建議,這一問題的細節之前。你爲什麼從數據庫中獲得前端代碼?那是你能夠改變的東西嗎?從數據庫獲取前端代碼可能成爲一個巨大的可維護性的噩夢。 – univ

+0

因爲,由於某種原因,我無法從生成的json文件加載數據,但這是一個不同的問題.. –

+0

這絕對是一個不同的問題,只是試圖幫助你避免去一個方向,可能會導致很多頭痛。數據和代碼是兩個獨立的東西,但爲什麼不調用後端API並檢索數據,而不是從數據庫+代碼中獲取數據? – univ

回答

0

好的,它解決了!感謝univ改變加載數據的方式的動機,以及其他一些小問題。下面你會找到代碼。

JS

function operateFormatter(value, row, index) { 
    return [ 
     '<button class="btn btn-xs btn-danger voteremove"><i class="fa fa-trash"></i></button>' 
    ].join(''); 
}; 

window.operateEvents = { 
     'click .like': function (e, value, row, index) { 
     alert('You click like icon, row: ' + JSON.stringify(row)); 
     console.log(value, row, index); 
    }, 
    'click .edit': function (e, value, row, index) { 
     alert('You click edit icon, row: ' + JSON.stringify(row)); 
     console.log(value, row, index); 
    }, 
    'click .voteremove': function (e, value, row, index) { 
     if(confirm("Weet je zeker dat je deze stem wilt verwijderen?")){ 
      var id = [row.id]; 
      var formMessages = $('#messages'); 
      var table = '#table2'; 
       $.ajax({ 
        type: 'POST', 
        url: 'functions.php?action=removeVote', 
        data: 'vote_id=' + id, 
        cache: false, 
        success: function() { 
         $(table).bootstrapTable('remove', { 
          field: 'id', 
          values: id 
         }); 
         $(formMessages).removeClass('alert-danger'); 
         $(formMessages).addClass('alert-success'); 
         $(formMessages).text('succesvol verwijderd'); 
         $(formMessages).show(); 
        }, 
        error: function(){ 
         $(formMessages).removeClass('alert-success'); 
         $(formMessages).addClass('alert-danger'); 
         $(formMessages).text('er is een fout opgetreden!'); 
         $(formMessages).show(); 
        } 
       }); 
     } 
    } 
}; 

HTML

<table id="table2" class="table table-striped table-hover table-no-bordered" 
data-toggle="table" 
data-search="true" 
data-pagination="true" 
data-page-size="25" 
data-show-refresh="true" 
data-url="stemmen.php" 
data-side-pagination="client" 
data-unique-id="id" 
>           <thead> 
<tr> 
    <th data-field="id" data-visible="false">ID</th> 
    <th data-field="timestamp">datum &amp; tijd</th> 
    <th data-field="email">e-mailadres</th> 
    <th data-field="stem">stem</th> 
    <th data-formatter="operateFormatter" data-events="operateEvents"></th> 
</tr> 
</thead> 
</table> 
+0

我覺得我今天在世界上做得很好哈哈很樂意幫助兄弟我很高興你願意考慮其他選擇: - ) 作爲編程時的總體說明,當您遵循最佳實踐時,事情往往會更好,而且您的生活會變得更加輕鬆,因爲遵循最佳實踐的替代方法是非常快速失控的一條非常黑暗的道路,因爲代碼庫增長:-) – univ

相關問題