Таким образом вы можете создавать элементы страничного блока, которые загружаются через AJAX и могут быть обновлены мгновенно без перезагрузки всей страницы. Он использует комбинацию кода jQuery и JavaScript. Это похоже на загрузчик содержимого в Facebook, но я сам написал его с нуля.
Преимущества использования этого метода AJAX
- Страница загружается быстрее, потому что она загружает поля содержимого после того, как DOM готов
- Содержимое в поле можно перезагрузить без перезагрузки всей страницы
- Все сайты движутся к этому, такие как Facebook, Twitter, Odesk и т. Д.
- Новые поля могут быть добавлены без необходимости дальнейшего кодирования CSS или JavaScript
Как это устроено
- После загрузки веб-страницы jQuery вызывает функцию AJAX для каждого загружаемого блока.
- Сообщение о загрузке отображается
- Файл сценария на стороне сервера (например, PHP) возвращает HTML-код для поля
- Контент загружается в поле на веб-странице
- Содержимое может быть легко перезагружено, когда пользователь наведет курсор на поле, в котором появится изображение обновления, и после щелчка содержимое обновится
Посмотреть демо
Скачать исходные файлы
Как это динамично?
Каждый блок — это div, который содержит атрибут id, который однозначно идентифицирует этот блок. Каждый элемент внутри этого div называется с этим идентификатором div. JQuery выбирает этот идентификатор и использует его для сопоставления со сценарием на стороне сервера (например, PHP), совпадает с идентификатором блока и загружается. Это делает его динамическим, потому что все переменные создаются на основе идентификатора блока.
код JQuery
Эта функция загружается после загрузки веб-страницы и инициализирует поля для использования прикрепленных событий.
jQuery(document).ready(function($) { //event to show the box controls when the mouse hovers the box //applies to all elements with class="box" $('.box').mouseover(function(){ //replace string "box" with "controls" var dyn_var = "#" + this.id.replace("box","controls"); $(dyn_var).show(); }); //initialize box controls $('.box .controls').hide(); //hide all box controls //hide box when mouse exits box $('.box').mouseout(function(){ $('.box .controls').hide(); }); //load box content (loads after page loads) loadboxcontent('box-id1'); loadboxcontent('box-id2'); //etc... });
Эта функция принимает идентификатор элемента div и загружает содержимое в дочерний элемент div с параметром id = box_id. Его можно применять к любому элементу управления box, поскольку он динамически создает переменные js для захвата объектов.
идентификатор контейнера div = box_id
php script name = box_id.php
function loadboxcontent(box_id){ //perform an initial check to see if box_id has been supplied if (box_id == '') { return false; } //show loading image var loading_image="/images/loader.gif"; //Full URL to "loading" image. var loading_text = '
Загрузка '+ box_id.replace (/ - / g, "") +' ...
«; var script_path = "../php/"; // путь к скрипту на стороне сервера var box_container = document.getElementById (box_id); box_container.innerHTML = loading_text; // записать результат запроса AJAX // (async = false) они загружаются по порядку и ждут окончания предыдущего // (async = true) они все загружаются одновременно var result = false; $ .Ajax ({ url: script_path + box_id + ". php", тип: 'POST', асинхронно: верно, данные: {блоги: 30}, success: function (data) { результат = правда; document.getElementById (box_id) .innerHTML = data; } }); if (result == false) {document.getElementById (box_id) .innerHTML = 'Не удалось обновить данные, попробуйте обновить страницу
«; } else {alert («Содержание обновлено успешно!»); } }
HTML код
Имя ящика
Код CSS
.box { text-align:left; min-height:50px; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; border:1px #FFFFFF groove; } .box:hover { background-color:#F2F2F2; border:1px #E4DFF4 groove; } .box h2 { margin:0; padding:5px 0px 5px 10px; background-color:#8973C8; color:white; text-shadow:1px 1px 1px #A999D7; } .box h2 a img { vertical-align:middle; } /* BOX CONTROLS */ .box .controls { float:right; position:relative; top:5px; right:5px; } .box .controls a { opacity:0.8; } .box .controls a:hover { opacity:1.0; }
Картинки
- Loader.gif
- Refresh.png