页面返回时的PHP搜索结果

时间:2014-01-06 10:10:58

标签: javascript php jquery search

我目前在同一页面(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再次加载它还是有更好的方法?

感谢。

6 个答案:

答案 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();
}

如果有人认为有更好的方法,请告诉我。

由于