Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Серия всплывающих окон с асинхронной подкачкой
 
 автор: Владимир55   (28.11.2014 в 18:36)   письмо автору
 
 

На странице http://fh7929mi.bget.ru/35.html список ссылок, при клике на каждую из которых появляется всплывающее окно, содержащее соответствующую информацию.

Когда таких ссылок не очень много и размер всплывающего контента невелик, все работает вполне удовлетворительно. Но если ссылок (и окон) несколько десятков, а в каждом всплывающем окне имеется графика и много текста, то страница начинает тормозить. Поэтому возникает необходимость сделать так, чтобы при загрузке страницы коды для всплывающих окон не загружались, а докачивались с сервера лишь тогда, когда по данной ссылке посетитель кликнет.

Сейчас содержимое каждого всплывающего окна заносится из CMS в макет страницы вот таким образом:
    <div id="3_audit_window" style="display:none;">
<?php
Core_Entity
::factory('Document'101)->Document_Versions->getCurrent()->execute(); 
?>
    </div>


Вроде бы, это можно осуществить с помощью ajax через с php+jQuery либо через с load только с jQuery, но что-то не пойму как конкретно.

  Ответить  
 
 автор: Commander   (28.11.2014 в 19:12)   письмо автору
 
   для: Владимир55   (28.11.2014 в 18:36)
 

А что именно непонятно?

  Ответить  
 
 автор: Владимир55   (28.11.2014 в 21:00)   письмо автору
 
   для: Commander   (28.11.2014 в 19:12)
 

Я практически этого никогда не делал, так что не пойму, как и приступать. Собственно, ничего и непонятно.

В сети много скриптов со схожими функциями. Я потыркался, да там тоже ничего не поймешь. Это как-то все уж очень сложно...

  Ответить  
 
 автор: Commander   (29.11.2014 в 07:08)   письмо автору
 
   для: Владимир55   (28.11.2014 в 21:00)
 

Работает точно также, как и всегда: JS-код запрашивает у сервера определенный адрес и делает с полученным ответом то, что ему надо. Выглядит очень просто (jQuery):

$.get('http://site.ru/path/to/page.html', '', function(response){
    //Здесь делаем с ответом сервера (response) то, что хотим сделать
    //Например:
    $('#ajax').html(response);
});


Ответ сервера представляет собой то, что он отдаст при прямом запросе через браузер. Соответственно, при ajax-запросе необходимо позаботиться о том, чтобы CMS отдавала "голую" страницу, без использования шаблона.

  Ответить  
 
 автор: Владимир55   (29.11.2014 в 17:23)   письмо автору
 
   для: Commander   (29.11.2014 в 07:08)
 

Не удается довести это до рабочего кода.

На странице page.html имеется запись:
Wowa - Вова


А сама страница здесь: http://fh7929mi.bget.ru/36.html Не работает. Полный код:

<!DOCTYPE html>
    <html>
    <head>
<title>Проверка </title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">

<link rel="stylesheet" type="text/css" href="/partner.css" />

<style type="text/css">
.partner {background-color: #E9DFBA; vertical-align: middle;  padding:0.2em; border-radius:0.3em; color: #000; float:none;  border: #D6C48D 1px solid; margin: 0.5em auto; padding-top:0;  width:75%; }

.partner a{ font-family: Tahoma, Geneva, sans-serif; font-weight:bold; text-decoration:none; height:0px;  color:#663300;}

.partner a:hover { 
  /* при наведении ссылка становится */ 
  text-decoration: underline; /* подчеркнутой */ 
 }

.name_grupp {text-align: center; font-weight: bolder; font-size: 120%;}
  </style>

            <!-- jQuery -->
<script type="text/javascript" src="/jquery.js"></script>
<script type="text/javascript" src="/jquery.simplemodal.js"></script>


<script type="text/javascript"> 
    function openWindow(module, id, success_href){
    $('#'+module+'_window').modal({onShow: function (dialog) {
        }});
    };
</script>

</head>

<body>


    <div class="partner">
    <a href="#" onClick="openWindow('1_leazing', ''); return false;">Первый партнер</a>
    </div>

    <div class="partner">
    <a href="#" onClick="openWindow('2_audit', ''); return false;">Второй партнер</a>
    </div>



<!-- Описания партнеров -->

    <div id="1_leazing_window" style="display:none;">
<script type="text/javascript">
$.get('page.html', '', function(response){ 
    $('#ajax').html(response); 
}); 
</script>    
    </div>


    <div id="2_audit_window" style="display:none;">Описание партнера</div>

  Ответить  
 
 автор: Commander   (29.11.2014 в 20:19)   письмо автору
 
   для: Владимир55   (29.11.2014 в 17:23)
 

$('#ajax') - это ссылка на элемент, в который должен быть подгружено то, что будет передано через ajax.

#ajax - это CSS-селектор, который идентифицирует элемент, к которому применен метод html(). Короче, код должен выглядеть так:

$.get('page.html', '', function(response){  
    $('css-селектор объекта').html(response);  
});  


В данном случае можно упростить:

$('css-селектор').load('page.html');


Метод load() загружает содержимое указанного элемента с указанного адреса.

  Ответить  
 
 автор: Владимир55   (29.11.2014 в 20:33)   письмо автору
 
   для: Commander   (29.11.2014 в 20:19)
 

А 'css-селектор объекта' - это что? Это файл стилей? Или класс css?

  Ответить  
 
 автор: Commander   (29.11.2014 в 20:44)   письмо автору
 
   для: Владимир55   (29.11.2014 в 20:33)
 

Или класс css?

Типа того. #ajax - это ссылка на элемент с id="ajax". Почитайте подробнее, как выбрать элемент(ы) для манипуляций при помощи jQuery. Например здесь. К выбранным элементам можно применить метод load(). А можно вставить HTML-содержимое при помощи метода html().

  Ответить  
 
 автор: Владимир55   (29.11.2014 в 21:10)   письмо автору
 
   для: Commander   (29.11.2014 в 20:44)
 

Я пробовал и так, и сяк - ничего не выводится.

Вы можете дописать эту несчастную строку, чтобы хоть что-нибудь заработало?

  Ответить  
 
 автор: Trianon   (30.11.2014 в 19:29)   письмо автору
 
   для: Владимир55   (29.11.2014 в 17:23)
 

<!DOCTYPE html>
    <html>
    <head>
<title>Проверка </title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">

<link rel="stylesheet" type="text/css" href="/partner.css" />

<style type="text/css">
.partner {background-color: #E9DFBA; vertical-align: middle;  padding:0.2em; border-radius:0.3em; color: #000; float:none;  border: #D6C48D 1px solid; margin: 0.5em auto; padding-top:0;  width:75%; }

.partner a{ font-family: Tahoma, Geneva, sans-serif; font-weight:bold; text-decoration:none; height:0px;  color:#663300;}

.partner a:hover { 
  /* при наведении ссылка становится */ 
  text-decoration: underline; /* подчеркнутой */ 
 }

.name_grupp {text-align: center; font-weight: bolder; font-size: 120%;}
  </style>

            <!-- jQuery -->
<script type="text/javascript" src="/jquery.js"></script>
<script type="text/javascript" src="/jquery.simplemodal.js"></script>


<script type="text/javascript"> 
    function openWindow(module, id, success_href){
    $('#'+module+'_window').modal({onShow: function (dialog) {
        }});
    };
</script>

</head>

<body>


    <div class="partner">
    <a href="#" onClick="$.get('page.html', '', function(response){ $('#1_leazing_window').html(response); }); return false;"
       >Первый партнер</a>
    </div>

    <div class="partner">
    <a href="#" onClick="$.get('page.html', '', function(response){ $('#2_audit_window').html(response); }); return false;"
      >Второй партнер</a>
    </div>



<!-- Описания партнеров -->

    <div id="1_leazing_window" style="display:none;">
    </div>


    <div id="2_audit_window" style="display:none;">Описание партнера</div>

  Ответить  
 
 автор: confirm   (30.11.2014 в 19:47)   письмо автору
 
   для: Trianon   (30.11.2014 в 19:29)
 

Плохо

  Ответить  
 
 автор: Trianon   (30.11.2014 в 19:49)   письмо автору
 
   для: confirm   (30.11.2014 в 19:47)
 

плохо, конечно.
клиентская сторона - это вообще ни разу не моя область.

Но Владимира это с места столкнет.

  Ответить  
 
 автор: Владимир55   (04.12.2014 в 14:37)   письмо автору
 
   для: Trianon   (30.11.2014 в 19:49)
 

Но Владимира это с места столкнет

Так оно и получилось, спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования