javascript — получить полную страницу не только фрагмент ответа Ajax

Я занимаюсь разработкой веб-приложения, используя клиентскую часть Javascript, библиотеку Jquery и серверную часть PHP. Я широко использовал AJAX и не использую href атрибут на элементах ссылки. Только домашняя страница загружается с нуля. Другие запрашиваются вызовами AJAX, а ответы AJAX помещаются на домашнюю страницу, например, с использованием Jquery. .html() функция, чтобы отобразить новые страницы.

Проблема в том, когда я бегу http://sani.com/index.phpЯ получаю домашнюю страницу. Если я нажму на кнопку поиска, я получу http://sani.com/search стр. Но если я бегу http://sani.com/search в адресной строке я получаю только ответ AJAX, поэтому содержимое помещается на главную страницу, а не на весь http://sani.com/search стр.

Как я могу получить полный http://sani.com/search страницу, когда я запускаю этот URL в адресной строке? Что я делаю неправильно?

2

Решение

Просто разбейте свою индексную страницу на три страницы

  • header.php
  • content.php
  • footer.php

и включить их на странице индекса

<?php
include_once 'header.php';
include_once 'content.php';
include_once 'footer.php';
?>

и сделать то же самое на странице поиска и привести в порядок колонтитулы

<?php
if(empty($_GET['htmlOnly'])) include_once 'header.php';
include_once 'content.php';
if(empty($_GET['htmlOnly'])) include_once 'footer.php';
?>

Теперь ваш URL-адрес ajax будет httt: //abc.com/search? htmlOnly = 1, и он будет загружать только часть содержимого

и без
«htmlOnly = 1» httt: //abc.com/search загрузит всю HTML-страницу.

2

Другие решения

Будь проще. Просто добавьте другой маршрут, который будет возвращать поисковый HTML.
Например:

/ search — вернет всю отображаемую страницу поиска.
/ getSearchHtml — вернет ваш единственный HTML-фрагмент, который вам нужен.

Это поможет вам избежать путаницы в ваших маршрутах.

0

Вы можете использовать общий макет, используя некоторые рамки с

  1. заголовок
  2. тело
  3. нижний колонтитул

Содержимое в теле может измениться и заголовок, нижний колонтитул будет обычным.
Если вы нажмете кнопку поиска, ajax-код будет загружен в части «body», если вы откроете страницу «/ search» отдельно, он также загрузится с общим верхним и нижним колонтитулом.

Вы должны дать отдельные имена для страницы поиска и файла ajax, так как код ajax является только частью страницы ‘/ search’, если вы хотите получить к нему доступ отдельно, вам нужно использовать общий макет, который будет представлять собой комбинацию всей страницы ,

0