2011-01-13 164 views
0

我有一个数据库中有2列的表名称|年龄,我将其显示在HTML页面中。PHP和Javascript之间的沟通

我想在用户点击它时根据字段对HTML页中的表进行排序。

我有一个PHP函数来根据字段进行排序。

但是,在PHP中按照排序顺序获取行之后,我正在寻找可以更新HTML表格的方式,而无需从页面导航。

+0

AJAX是如何在PHP和Javascript之间进行通信的,但是如果你想节省麻烦,就有用于排序表的Javascript函数; PHP不是必需的。 – Jake 2011-01-13 17:40:39

回答

1

你可以在javascript中进行排序,而不必与服务器通信。

function sortTable(table, column, skipHeader) { 
    // Stick each row into an array. 
    var rows = []; 
    for (var i = skipHeader ? 1 : 0; i < table.rows.length; i++) { 
    rows.push(table.rows[i]); 
    } 

    // Sort the array based on the innerText of the column'th cell in each row 
    rows.sort(function(a, b){ 
    a = a.cells[column].innerText; 
    b = b.cells[column].innerText; 
    return a < b ? -1 : (b < a ? 1 : 0); 
    }); 

    // Re-order the rows by removing/appending in the sort order 
    for (var i = 0; i < rows.length; i++) { 
    var row = rows[i]; 
    var container = row.parentElement; 
    container.removeChild(row); 
    container.appendChild(row); 
    } 
} 

例如,到第一表进行排序在文档中,在第一列上,并跳过标题行::例如,该代码将根据第N列的内容进行排序的表

sortTable(document.getElementsByTagName('table')[0], 0, true); 

很明显,你会想要修改这个以适应你自己的口味,特别是排序,但它比把数据发回服务器要简单很多,我认为这是你提出的。

4

您不需要在客户端和服务器之间进行通信来完成此操作,只需对客户端上的表进行直接排序即可。

有一个jQuery插件,这是工作得很好:

http://tablesorter.com/docs/