2015-10-04 79 views
1

我正在嘗試使用tablesorter來解析返回的php POST請求的json。用PHP返回Jquery和tablesorter JSON

Post請求成功返回json,但是,tablesorter無法正常工作。 從我所知道的情況來看,只有靜態表數據正在使用tablesorter。 tablesorter未應用於正在格式化到錶行中的返回的JSON數據。

所以基本上,我得到的是手動放置在HTML主體中的標題值的過濾功能。 我相信發生這種情況是因爲當tablesorter應用於表時,返回的json不在DOM中。 我認爲在Jquery php post請求之後放置tablesorter代碼可以解決這個問題,但仍然無法正常工作。

如果問題tablesorter不會在返回的數據上工作,是我唯一的選擇,然後在PHP中構建表,然後返回完成的表到PHP頁面的頁面?

$.when($.post('../php/load_json.php',{path: dir})).done(
    function(data){ 
    var obj = jQuery.parseJSON(data); 
    var html = ''; 
    for(var i = 0; i < obj.length; i++){ 
     html += '<tr><td>' + obj[i].vala+ '</td><td>' + obj[i].valb+ '</td><td>' + obj[i].valc+ '</td><td>' + obj[i].vald+ '</td><td>' + obj[i].vale+ '</td></tr>'; 
} 

$('#mytable tbody').first().after(html);       

$("#mytable ") 
    .tablesorter({ 
    theme: 'blue', 
    headerTemplate : '{content} {icon}', 
    widthFixed: true, 
    widgets: ['zebra', 'filter'] 
    }) 
}); 


<html><body> 
    <table id="mytable" class="tablesorter"> 
    <thead><tr> 
    <th>vala</th> 
    <th>valb</th> 
    <th>valc</th> 
    <th>vald</th> 
    <th>vale</th> 
    </tr></thead> 
    <tbody> 
    </tbody>  
    </table> 
</body></html> 

回答

1

想通了。

爲此,您必須首先在空表上初始化tablesorter。 然後用PHP Post添加數據。

添加數據,我用了append方法而不是first().after(html);

一旦做到這一點,你需要調用與更新的觸發方式。

這裏是更新的代碼。

$("#mytable ") 
     .tablesorter({ 
     theme: 'blue', 
     headerTemplate : '{content} {icon}', 
     widthFixed: true, 
     widgets: ['zebra', 'filter'] 
     }) 
    }); 


    $.when($.post('../php/load_json.php',{path: dir})).done(
     function(data){ 
     var obj = jQuery.parseJSON(data); 
     var html = ''; 
     for(var i = 0; i < obj.length; i++){ 
      html += '<tr><td>' + obj[i].vala+ '</td><td>' + obj[i].valb+ '</td><td>' + obj[i].valc+ '</td><td>' + obj[i].vald+ '</td><td>' + obj[i].vale+ '</td></tr>'; 
    } 

    $("#mytable tbody").append(html); 
    $("#mytable ").trigger("update");       




    <html><body> 
     <table id="mytable" class="tablesorter"> 
     <thead><tr> 
     <th>vala</th> 
     <th>valb</th> 
     <th>valc</th> 
     <th>vald</th> 
     <th>vale</th> 
     </tr></thead> 
     <tbody> 
     </tbody>  
     </table> 
    </body></html>