我正在开发一个使用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?
答案 0 :(得分:0)
您可以像使用$ _GET一样使用$ _POST进行分页,而无需使用SESSION变量/ cookie,您只需将分页变量作为隐藏值传递到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>
缺点是POST会使页面过期&#39;使用浏览器后退按钮(但不是HTML按钮)时出错,这不是很好。出于这个原因,我更喜欢$ _GET,还因为你可以为$ _GET查询添加书签,但不是$ _POST。