В настоящее время я показываю результаты поиска на одной странице (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();
}
}
}
Как вы видите, я делаю несколько проверок. Но представьте, что люди входят в другой url (моей страницы), например list.php? Id = 33, а затем они нажимают кнопку "Назад" браузера. В браузере отобразится (с этим кодом) результаты $load->common()
а не $load->search()
, потому что $_POST['search-what-box']
не был нажат (форма не была отправлена).
Как я могу показать результаты поиска вместо обычных результатов после того, как люди нажмут кнопку "Назад" браузера? Должен ли я сохранять информацию (после отправки формы) в javascript, а затем загружать ее снова jQuery или есть лучший подход?
Благодарю.
Не связанный с вашим вопросом, но вы смешиваете $_GET['type']
и $_POST['search-what-box']
. Хотя технически это возможно, вы должны использовать либо $_GET
либо $_POST
.
Чтобы решить проблему "Back button", вы можете использовать идиому Post/Redirect/Get.
В общем, вы должны разработать свой веб-сайт, который будет гибким, если кнопка "Назад" не является обязательной.
Но если вы действительно хотите сохранить свой последний результат поиска, вы можете сохранить его в $ _SESSION, например, на стороне сервера.
вы можете использовать вызов JQuery Ajax, см. здесь
если щелкнуть обратно данные "Получить и отправить данные" являются предыдущими в этом случае, ajax затем использует эту информацию для отображения страницы
Хорошо, ребята, со всеми вашими ответами и помощью, я решил свою проблему.
$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();
}
Если кто-нибудь подумает, что есть лучший подход, дайте мне знать.
благодаря
Почему бы вам не сделать поисковый запрос частью URL? Вместо этого используйте _GET
, это то, что делает Google.com. Таким образом, я мог бы вставить URL-адрес и передать его кому-то, и он просмотрит результаты.
GET
информацию Ting с вашего сервера, чтобы использовать GET
ВАР
Первый вопрос - это поведение браузеров. Насколько я вижу, браузеры не загружают страницу заново, когда вы нажимаете назад - они показывают вам страницу как сервер, отправленный им раньше (с данными сообщения).