在PHP和Javascript之间进行通信

时间:2011-01-13 17:37:00

标签: php javascript html xhtml

我在数据库中有一个表有2列Name |年龄,我在HTML页面中显示它。

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

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

但是在PHP中按排序顺序获取行之后,我正在寻找可以在不离开页面的情况下更新HTML表的方法。

4 个答案:

答案 0 :(得分:4)

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

有一个jQuery插件可以很好地运行:

http://tablesorter.com/docs/

答案 1 :(得分:1)

这是一个javascript库的链接,使您的表可以使用javascript而不是php进行排序。我已经多次使用它,效果很好。

Javascript Sortable Tables by: Stuart Langridge

答案 2 :(得分:1)

由于其他人已经涵盖了这样一个事实,即客户端排序在这里工作得很好,我只会指出你做过这种事情我最成功的资源:Google Data Tables,他们Visualization Library的一部分。 Here are the deets关于你能做什么(剧透:你想要的一切以及更多)。

答案 3 :(得分:1)

您可以在javascript中进行排序,而无需与服务器通信。例如,此代码将根据第N列的内容对表进行排序:

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);
  }
}

例如,要对文档中的第一个表进行排序,在第一列上,并跳过标题行:

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

显然你会想要修改它以满足你自己的口味,特别是排序,但它比将数据发回服务器要简单得多,我认为这就是你提出的建议。