| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > подгрузка страниц без откравки запроса |
| Автор: numerovan 22.11.2009, 19:11 | ||||||
| Как можно осуществить такое: 1. имеется обычная php страница , где внутри есть html и сам php код, она используется для include(); 2. имеется основная страница с body и head и т.д. нужно подключить 1 страничку путём обработчика onclick на основной странице , посылать на страничку 1 ни каких GET и POST не нужно, а нужно тупо как инклюд подсоеденить. Постаряюсь привести пример: Основная страница
Подключаемый кусочек
|
| Автор: Ипатьев 22.11.2009, 19:14 |
| может, тупо сразу загрузить, и просто сделать див невидимым, а по клику - видимым? |
| Автор: numerovan 22.11.2009, 19:17 |
| нет , такой подход не подойдёт , потому что информации хватает так и не хотелось бы накладывать лишних килобайт на страницу ... Хотелось бы сделать вот типо как Вы сказали display='none', display='block' , но средствами ФОНОВОЙ ЗАГРУЗКИ , в чём его прелесть : не загрузим страницу и будет работать как display='none' (block) |
| Автор: bars80080 22.11.2009, 23:04 |
| ну, в общих чертах правильно. а что не так? modul_anketa.php выдаёт что-нибудь? сам по себе, если запрос просто в адресную строку вставить? кстати, почему он не абсолютный? |
| Автор: numerovan 22.11.2009, 23:29 | ||||||
выдаёт нужную информацию
хочится без перезагрузки это сделать. (подсоединить)
абсолютный в данном случае не нужен. |
| Автор: bars80080 22.11.2009, 23:30 |
дык, загружается по ajax запросу? вставляется в див? что ещё надо? это ведь и есть - без перезагрузки всей страницы, мы подгружаем только одну часть |
| Автор: numerovan 22.11.2009, 23:47 | ||
если делать через XMLHttpRequest() , то придётся разделить либо ещё раз подгрузить яваскрипт( css, php) на модульные страницы, для того чтоб нормально отображалось на главной странице. чтобы не разделять и не копировать прикреплённые файлы(css, javascript, php) к главной странице лучше получается с include(), таких инклюд будет штук 5 ... В зависимости от нажатия кнопки , подгружатеся соответствующая часть , как бы через инклюд и без перезагрузки ... Вот как такое сделать? |
| Автор: numerovan 23.11.2009, 00:32 | ||
Я сделал следующее : 1. есть главная страница , к этой главной странице прикреплён как минимум один css файл (но там ещё большо прикрепленно , т.е. к главной странице и явасприпты, и php , и библеотеки) 2. после я с главной страниц , скажем так , убрал один кусок и сохранил в отдельном файле (таких файлов 5) , в каждый этот файл использует то что присоеденино на главной странице (стили, функции и т.д.) 3. чтобы всё корректно работало нужно соответсвующие стили, функции поместить и те модули что я сделал 4 . вот и получается разделение или снова же копирование туда же ... Не знаю что тут поулчится ... сделал пока с перезагрузкой ... |
| Автор: Ипатьев 23.11.2009, 00:42 |
| Вот и оставьте с перезагрузкой. |
| Автор: bars80080 23.11.2009, 00:51 | ||
не понятно. почему? если к главному файлу присоединены файлы .css и .js, то при замене содержимого одного дива действие стилей и скриптов из этих файлов также будет распространяться на новый кусок |
| Автор: numerovan 23.11.2009, 00:56 | ||
так ... я так пропробывал и начало ругаться на функции php, что их типо не видно , кстати и на css тоже ругалось , т.е. я уже видил что выглядит не так как нужно ... попробую ещё раз, но помоему я прав ... ответ напишу чуть позже. |
| Автор: brother79 23.11.2009, 07:54 |
| А почему бы не освоиться с jquery? Там есть ф-я load, сама всё делает, только вызываешь для нужного дива и она тебе подгружает то, что получит. Можно конечно то же самое сделать и без jquery, но я смысла не вижу корячиться врукопашную, когда можно готовое использовать. |
| Автор: Ипатьев 23.11.2009, 08:52 |
| Нет смысла совсем в другом Пихать аякс там, где он совсем не нужен, и наоборот - вреден. Чуть-чуть пошире думаем, хотя бы на пол-хода вперед. |
| Автор: brother79 23.11.2009, 09:36 | ||
Опять же не согласен. По данной задаче: 1) Подгружать кусок html аяксом - действительно бывает очень удобно в ряде случаев, когда нипример надо обновить только какую-то небольшую часть страницы и нету смысла все вар-ты сразу грузить и прятать, чтобы потом показать. 2) а вот поповоду стилей и дополнительных js: - Стили - ИМХО лучше сразу грузить, т.к. они потом будут кешироваться и грузиться только 1 раз, причём в идеале надо сделать одним пакованным css и грузить через gzip - js - желательно также как и стили, но исли сильно надо -= можно конечно и в процессе подгрузить. тут как-то эта тема обсуждалась, как их по аяксу подгрузить. Мне просто интересно как вы определили, что в данном случае аякс вреден? Автор задал вполне логичный вопрос, а чтобы определить что более рационально перегружать всю страницу или аяксом дёргать кусочек - надо знать намного больше информации по исходному сайту, а в указанном примере нету полного хтмл, да и смысла его нету полностью указывать, т.к. вопрос был не в этом, а как сделать. Можно ещё грузить json и самому потом страницу перебирать, но это будет оптимальней по трафику, но сложнее по реализации, и опять же в зависимости от задачи в целом надо принимать решение как лучше сделать. |
| Автор: Ипатьев 23.11.2009, 10:31 |
| Опять это сакраментальное "бывает очень удобно в ряде случаев". Можно дальше не продолжать. Очередное собрание клуба фантастов. |
| Автор: bars80080 23.11.2009, 10:32 |
значит, в modul_anketa.php у вас не происходит подключения файла с теми функциями, которыми пользуетесь. они же у вас, наверняка вынесены в отдельную библиотеку, почему бы не подключить также, как это делается в первом случае? |
| Автор: brother79 23.11.2009, 10:37 | ||||
Опять вам лишь бы что-то ответить. Добавлено через 6 минут и 15 секунд
На сколько я понял, там писалось про js и css, а сейчас ты пишешь про php. Они между собой никак не связанны. Попробуй свою modul_anketa.php в отдельном окне вызывать, без основной страницы, добейся, чтобы там код нужный выдавался без ошибок php, оно будет правда без ворматирования, только кусок хтмл, но когда пхп-шные ошибки исправишь, попробуешь всё в сборе. |