Javascript PHP-分页:$\u POST或$\u GET

Javascript PHP-分页:$\u POST或$\u GET,javascript,php,jquery,pagination,Javascript,Php,Jquery,Pagination,我正在开发一个搜索系统多个过滤器,使用php分页。 起初,我将POST方法与主窗体一起使用。但是,使用POST我无法保持分页。原因:例如,当用户按名称搜索时,当他在下一页中单击时,查询将丢失并返回到第一页。 为了解决这个问题,我使用GET方法。 但是使用GET,url会获取参数。用户不希望这样 例如: http://mysearch.com/search.php?name=joe&id=1 我只是想 http://mysearch.com/search.php 我尝试了以下解决方法:

我正在开发一个搜索系统多个过滤器,使用php分页。 起初,我将POST方法与主窗体一起使用。但是,使用POST我无法保持分页。原因:例如,当用户按名称搜索时,当他在下一页中单击时,查询将丢失并返回到第一页。 为了解决这个问题,我使用GET方法。 但是使用GET,url会获取参数。用户不希望这样

例如:

http://mysearch.com/search.php?name=joe&id=1
我只是想

http://mysearch.com/search.php
我尝试了以下解决方法:

if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", "http://mysearch.com/search.php");
}
但是当我在浏览器中点击上一页/返回时,带有参数的URL也会返回


有解决办法吗?使用GET或POST进行分页时,参数不会显示在URL中?

您可以使用$\u POST进行分页,就像使用$\u GET一样简单,而不使用会话变量/cookies,您只需要在HTML表单中将分页变量作为隐藏值传递

例如-对于两个按钮,其中一个按钮将带您进入上一页,另一个按钮将带您进入下一页:

//prev button
<form action="paginate.php" method="post">
    <input type="hidden" name="prev" value="0"/> 
    <input type="submit" value="Go to previous page"/>
</form>

//next button
<form action="paginate.php" method="post">
    <input type="hidden" name="next" value="2"/> 
    <input type="submit" value="Go to next page"/>
</form>

//search form
<form action="paginate.php" method="post">
    <input type="hidden" name="prev" value="0"/>         
    <input type="hidden" name="next" value="2"/> 
    <input type="text" name="search" value="User input goes here"/> 
    <input type="submit" value="Search the database"/>
</form>

缺点是,当使用浏览器后退按钮而不是HTML按钮时,POST会出现“页面过期”错误,这并不好。出于这个原因,我更喜欢$\u-GET,也因为你可以为$\u-GET查询添加书签,但不能为$\u-POST添加书签。

为什么用户不希望这样?大多数,如果不是全部。。。搜索引擎就是这样工作的,通过这样做,你的访问者将能够共享链接并为链接添加书签。正如我所说,该搜索具有多个过滤器。具有权限A的用户可以按名称搜索,但具有权限b的用户不能。即使该字段不会出现在页面中,并且会对url进行整型处理,他们也担心其他用户会通过输入&name参数来修改url,从而在搜索查询中获得成功。后端应该确保用户只能执行允许的操作,而不管他们发送的请求如何。这正是我告诉他们的。用户,对吗无可争辩:-谢谢@fred2。就我而言,我正在使用。这些页数是根据选择return的行数动态创建的。我想我必须遵守GET……是的——使用这种方法而不使用GET没有多大意义。您可以使用POST来完成这项工作,但方法可能是使用JavaScript并将onclick事件分配给每个数字,然后由POST动态提交变量。但那真的是无缘无故地把你的头撞在砖墙上。哈哈哈,明白了。我不会那么做的。我将坚持使用GET方法。谢谢