【发布时间】:2018-06-28 22:46:42
【问题描述】:
我的网站上有一个表单,用户可以使用该表单按选择的列对数据表进行排序。本质上是这样的:
<form action="" method="post">
<select name="orderby">
<option value="col_1">Column 1</option>
<option value="col_2">Column 2</option>
<option value="col_3">Column 3</option>
</select>
<input type="submit" value="Order By"/>
</form>
它运作良好,但我想通过允许用户点击表格列标题来更新它是如何完成的。我这样做的尝试是将 onclick 事件添加到我的表头并使用 Javascript 将相同的数组发布回页面。换言之,Array ( [orderby] => col_2 ) 在单击第 2 列时将保持完全相同。这将保留我所有的其他代码。这是我对表格标题所做的更改:
<table>
<tr>
<th onclick="post('col_1')">Column 1</th>
<th onclick="post('col_2')">Column 2</th>
<th onclick="post('col_3')">Column 3</th>
</tr>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr>
<td>B</td>
<td>C</td>
<td>A</td>
</tr>
</table>
这是我写的 Javascript:
<script>
function post(clm) {
$.post('mypage.php',{orderby:clm});
}
</script>
这行不通。谁能告诉我我需要改变什么才能让它工作?现在,如果我单击表头,$_POST 数组仍然为空。 (mypage.php 是调用该函数的同一页面。我也尝试过在单引号之间没有任何内容,就像使用表单操作属性一样,但它也不是那样工作的。)
【问题讨论】:
-
您重新调用 mypage.php - 这不会影响您在屏幕上呈现的内容。要么显示返回的 ajax 数据,要么不提交实际的 ajax 表单,这会导致页面刷新
-
好点。从我对 AJAX 的了解来看,它非常适合提交 sn-ps 数据,而无需重新加载整个页面。但是,我需要重新加载整个页面。是否有一两行简单的 AJAX 可以做到这一点?
-
Ajax 将要求您重新编写您的 php,以便在通过 ajax 请求时仅输出表数据,我建议一个更简单的解决方案 - 您是否也会在页面上有下拉表单,或者您是否正在删除它?
-
页面中是否存在所有数据?如果是这样,请不要提出请求,只需对表格数据进行排序即可。如果没有,刷新页面是最简单的事情,数据是怎么先加载的?
-
这个 mySQL 数据库中有超过 100K 的记录。结果集为 8 列宽,使用用户的“每页行数”首选项分块检索。过滤是可用的,包括从完整的运算符列表中进行选择的能力。所有偏好都是持久的......当用户选择另一个分页页面时,从数据库中检索相应的 10 行(例如)集合,同时牢记所有用户偏好。所有这些 php 都必须执行,以及为什么我要使用新的 $_POST 数组重新提交整个页面。
标签: javascript php jquery html-table