Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подгрузка страниц без откравки запроса, без перезагрузки страницы подсоед-ть стр 
:(
    Опции темы
numerovan
Дата 22.11.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



Как можно осуществить такое:

1. имеется обычная php страница , где внутри есть html и сам php код, она используется для include();
2. имеется основная страница с body и head и т.д.

нужно подключить 1 страничку путём обработчика onclick на основной странице , посылать на страничку 1 ни каких GET и POST  не нужно, а нужно тупо как инклюд подсоеденить.

Постаряюсь привести пример:
Основная страница
Код

<html>
............
<button onclick="myFunc('id_div', 'anketa')">BUT</button>// нажимаем сюда и результат загружается в див

<div id="id_div"></div> // сюда включаем подгружаемую часть
</html>


Подключаемый кусочек
Код

<table>
................... и т.д. 
</table>

Код

 function myFunc(id, cat){
                var req;
        if(window.XMLHttpRequest) req = new XMLHttpRequest();
        else if(window.ActiveXObject){
            try {
                req = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e){}
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
        if(req){
            req.onreadystatechange = function() {
                if (req.readyState == 4 && req.status == 200){
                    document.getElementById(id).innerHTML = req.responseText;
                }       
            };
            if(cat == 'anketa'){
                req.open("POST", 'modul_anketa.php', true); //<---- вот без этого, не надо ни чего отправлять
                req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //
                //req.send(encodeURI('addFolder=' + nameFolder));
            }
        }
}

PM MAIL   Вверх
Ипатьев
Дата 22.11.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



может, тупо сразу загрузить, и просто сделать див невидимым, а по клику - видимым?
PM MAIL   Вверх
numerovan
Дата 22.11.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



нет , такой подход не подойдёт , потому что информации хватает так и не хотелось бы накладывать лишних килобайт на страницу ... Хотелось бы сделать вот типо как Вы сказали display='none', display='block' , но средствами ФОНОВОЙ ЗАГРУЗКИ , в чём его прелесть : не загрузим страницу и будет работать как display='none' (block) 
PM MAIL   Вверх
bars80080
Дата 22.11.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, в общих чертах правильно. а что не так?

modul_anketa.php выдаёт что-нибудь? сам по себе, если запрос просто в адресную строку вставить?

кстати, почему он не абсолютный?
PM MAIL WWW   Вверх
numerovan
Дата 22.11.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



Цитата

modul_anketa.php выдаёт что-нибудь?

выдаёт нужную информацию

Цитата

если запрос просто в адресную строку вставить?


хочится без перезагрузки это сделать. (подсоединить)
Цитата

кстати, почему он не абсолютный? 

абсолютный в данном случае не нужен.

PM MAIL   Вверх
bars80080
Дата 22.11.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(numerovan @  22.11.2009,  22:29 Найти цитируемый пост)
хочится без перезагрузки это сделать. (подсоединить)

дык, загружается по ajax запросу? вставляется в див? что ещё надо? это ведь и есть - без перезагрузки всей страницы, мы подгружаем только одну часть
PM MAIL WWW   Вверх
numerovan
Дата 22.11.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



Код

<html>
............
тут присоединён css
куча явасприпта
а так же php
............
<button onclick="myFunk('id', 'cat_1' )">one</button>
<button onclick="myFunk('id', 'cat_2' )">two</button>
<button onclick="myFunk('id', 'cat_3' )">three</button>

<div id="id"></div>
</html>


если делать через XMLHttpRequest() , то придётся разделить либо ещё раз подгрузить яваскрипт( css, php) на модульные страницы, для того чтоб нормально отображалось на главной странице.

чтобы не разделять и не копировать прикреплённые файлы(css, javascript, php) к главной странице лучше получается с include(), таких инклюд будет штук 5 ... В зависимости от нажатия кнопки , подгружатеся соответствующая часть , как бы через инклюд и без перезагрузки ... Вот как такое сделать?
PM MAIL   Вверх
Ипатьев
Дата 22.11.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(numerovan @  22.11.2009,  23:47 Найти цитируемый пост)
если делать через XMLHttpRequest() , то придётся разделить либо ещё раз подгрузить яваскрипт( css, php) на модульные страницы, 

очень странное рассуждение.
с какой стати придется что-то делить - непонятно.

но главное не это
а в чем смысл делать без перезагрузки?


PM MAIL   Вверх
numerovan
Дата 23.11.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



Цитата

очень странное рассуждение.
с какой стати придется что-то делить - непонятно.

Я сделал следующее :
1. есть главная страница , к этой главной странице прикреплён как минимум один css файл (но там ещё большо прикрепленно , т.е. к главной странице и явасприпты, и php , и библеотеки)
2. после я с главной страниц , скажем так , убрал один кусок и сохранил в отдельном файле (таких файлов 5) , в каждый этот файл использует то что присоеденино на главной странице (стили, функции и т.д.)
3. чтобы всё корректно работало нужно соответсвующие стили, функции поместить и те модули что я сделал
4 . вот и получается разделение или снова же копирование туда же ...

Не знаю что тут поулчится ... сделал пока с перезагрузкой ...
PM MAIL   Вверх
Ипатьев
Дата 23.11.2009, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вот и оставьте с перезагрузкой. 
PM MAIL   Вверх
bars80080
Дата 23.11.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(numerovan @  22.11.2009,  23:32 Найти цитируемый пост)
3. чтобы всё корректно работало нужно соответсвующие стили, функции поместить и те модули что я сделал

не понятно. почему?

если к главному файлу присоединены файлы .css и .js, то при замене содержимого одного дива действие стилей и скриптов из этих файлов также будет распространяться на новый кусок
PM MAIL WWW   Вверх
numerovan
Дата 23.11.2009, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: 0
Всего: 2



Цитата

не понятно. почему?

если к главному файлу присоединены файлы .css и .js, то при замене содержимого одного дива действие стилей и скриптов из этих файлов также будет распространяться на новый кусок 

так ... я так пропробывал и начало ругаться на функции php, что их типо не видно , кстати и на css тоже ругалось , т.е. я уже видил что выглядит не так как нужно ... попробую ещё раз, но помоему я прав ... ответ напишу чуть позже.
PM MAIL   Вверх
brother79
Дата 23.11.2009, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



А почему бы не освоиться с jquery? Там есть ф-я load, сама всё делает, только вызываешь для нужного дива и она тебе подгружает то, что получит. Можно конечно то же самое сделать и без jquery, но я смысла не вижу корячиться врукопашную, когда можно готовое использовать.


--------------------
PM MAIL WWW   Вверх
Ипатьев
Дата 23.11.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Нет смысла совсем в другом
Пихать аякс там, где он совсем не нужен, и наоборот - вреден.
Чуть-чуть пошире думаем, хотя бы на пол-хода вперед.
PM MAIL   Вверх
brother79
Дата 23.11.2009, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Цитата(Ипатьев @  23.11.2009,  08:52 Найти цитируемый пост)
Нет смысла совсем в другом
Пихать аякс там, где он совсем не нужен, и наоборот - вреден.
Чуть-чуть пошире думаем, хотя бы на пол-хода вперед. 


Опять же не согласен.

По данной задаче:

1) Подгружать кусок html аяксом - действительно бывает очень удобно в ряде случаев, когда нипример надо обновить только какую-то небольшую часть страницы и нету смысла все вар-ты сразу грузить и прятать, чтобы потом показать.
2) а вот поповоду стилей и дополнительных js:
- Стили - ИМХО лучше сразу грузить, т.к. они потом будут кешироваться и грузиться только 1 раз, причём в идеале надо сделать одним пакованным css и грузить через gzip
- js - желательно также как и стили, но исли сильно надо -= можно конечно и в процессе подгрузить. тут как-то эта тема обсуждалась, как их по аяксу подгрузить.

Мне просто интересно как вы определили, что в данном случае аякс вреден? Автор задал вполне логичный вопрос, а чтобы определить что более рационально перегружать всю страницу или аяксом дёргать кусочек - надо знать  намного больше информации по исходному сайту, а в указанном примере нету полного хтмл, да и смысла его нету полностью указывать, т.к. вопрос был не в этом, а как сделать. Можно ещё грузить json и самому потом страницу перебирать, но это будет оптимальней по трафику, но сложнее по реализации, и опять же в зависимости от задачи в целом надо принимать решение как лучше сделать.

Это сообщение отредактировал(а) brother79 - 23.11.2009, 09:37


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.