我目前在同一页面(index.php)中显示搜索结果,在URL的参数中我只是把 index.php?type = search
<form method='POST' action='" . $_SERVER['PHP_SELF'] . "?type=search'>
所以,在 index.php 中,我会检查它是否是搜索:
if(!isset($_GET['type'])) {
echo $load->common();
}else{
if($_GET['type'] == 'search'){
if(isset($_POST['search-what-box'])){
echo $load->search($_POST['search-what-box'], $_POST['search-where-box'], null);
}else{
echo $load->common();
}
}
}
如你所见,我做了几次验证。但是想象一下,人们进入另一个网址(我的网页),比如 list.php?id = 33 ,然后他们点击浏览器的后退按钮......浏览器将显示(使用此代码) $load->common()
而非$load->search()
的结果,因为$_POST['search-what-box']
未被按下(表单未被提交)。
人们点击浏览器的后退按钮后,如何显示搜索结果而不是常见结果?我应该在javascript中保存信息(在提交表单后),然后通过jQuery再次加载它还是有更好的方法?
感谢。
答案 0 :(得分:2)
与您的问题无关,但您混合了$_GET['type']
和$_POST['search-what-box']
。虽然技术上可行,但您应使用$_GET
或$_POST
。
要解决“后退按钮问题”,您可以使用Post/Redirect/Get成语。
答案 1 :(得分:1)
一般情况下,您应该设计一个灵活的网站,后面的按钮根本不需要。
但是如果你真的想保存你的上一个搜索结果,你可以将它保存在$ _SESSION中,例如在服务器端。
答案 2 :(得分:0)
您可以使用JQuery Ajax调用see here
如果在这种情况下单击“获取和发布”数据信息是先前的,则ajax然后使用该信息来呈现页面
答案 3 :(得分:0)
第一个问题是 browsers 的行为。据我所知,当您按下时,浏览器不会重新加载页面 - 它们会向您显示服务器之前发送的页面本身(带有帖子数据)。
答案 4 :(得分:0)
为什么不将搜索查询作为网址的一部分?请改用_GET
,这是Google.com所做的。这样我就可以粘贴URL并将其提供给某人,然后查看结果。
答案 5 :(得分:0)
好的,有你所有的答案和帮助我解决了我的问题。
$url = "http://". $_SERVER['HTTP_HOST'] . urldecode($_SERVER['REQUEST_URI']);
// urldecode = some special characters might be in the query
$parse = parse_url($url);
// documentation: http://pt1.php.net/parse_url
if(isset($parse['query'])){
$split = $parse['query'];
parse_str($split);
// documentation: http://pt2.php.net/manual/en/function.parse-str.php
if(isset($what)){
echo $load->search($what, $where);
}else{
echo $load->common();
}
}else{
echo $load->common();
}
如果有人认为有更好的方法,请告诉我。
由于