Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Ajax і XML: Робота з таблицями в Ajax

  1. Серія контенту:
  2. Цей контент є частиною серії: Ajax і XML
  3. Часто використовувані абревіатури
  4. Вікна з закладками
  5. Лістинг 1. index.html
  6. Лістинг 2. tab1.html
  7. Малюнок 1. Первісний вигляд сторінки з закладками
  8. Малюнок 2. Форма сторінки після вибору другої закладки
  9. Основи роботи з таблицями в Ajax
  10. Лістинг 3. index.html
  11. Лістинг 4. books.xml
  12. Малюнок 3. Зовнішній вигляд таблиці, побудованої за даними XML
  13. Посторінковий вивід сторінок за допомогою Ajax
  14. Лістинг 5. index.html
  15. Лістинг 6. data.php
  16. Лістинг 7. stats.php
  17. Малюнок 4. Зовнішній вигляд таблиці з посторінковим висновком
  18. Малюнок 5. Друга сторінка таблиці
  19. Приховані таблиці з розбивкою на сторінки
  20. Лістинг 8. index.php
  21. Малюнок 6. Зовнішній вигляд таблиці з фіктивним посторінковим розбиттям
  22. глайдери
  23. Лістинг 9. index.html
  24. Малюнок 7. Приклад реалізації закладок за допомогою глайдера
  25. висновок
  26. Ресурси для скачування

Наша взаимовыгодная связь https://banwar.org/

Ajax і XML

Використання Ajax для створення таблиць, закладок і глайдеров

Серія контенту:

Цей контент є частиною # з серії # статей: Ajax і XML

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=ajax+и+xml

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Ajax і XML

Слідкуйте за виходом нових статей цієї серії.

Як правило, Ajax і Web 2.0 в свідомості людей асоціюються з візуальними елементами призначеного для користувача інтерфейсу. Привабливість Ajax обумовлена ​​саме відчуттям інтерактивності, яке з'являється, коли не доводиться оновлювати сторінку. Це аж ніяк не рекламне гасло, адже оновлення сторінок в традиційних додатках HTML призводить до морганню екрану, причому повторне завантаження елементів викликає візуальне відчуття зміни контексту навіть при найвищій швидкості з'єднання.

Часто використовувані абревіатури
  • DHTML: динамічний HTML
  • HTML: мова розмітки гіпертексту
  • XSLT: розширювана мова стильових перетворень

У цій статті розглядається кілька методик (як з використанням Ajax, так і без нього) проектування призначеного для користувача інтерфейсу, що дозволяють уникнути подібного відчуття зміни контексту. Ми почнемо з найпростішого прикладу використання Ajax - вікна з закладками.

Вікна з закладками

Закладки (tabs) надають найпростіший спосіб того, як можна вмістити безліч даних на невеликій області екрану. Prototype - чудова JavaScript-бібліотека - до межі спрощує створення DHTML-вікон із закладками і підтримкою Ajax (див. лістинг 1 ). Якщо ви хочете більше дізнатися про цю бібліотеці або завантажити її для власних потреб, то зверніться до розділу ресурси .

Лістинг 1. index.html

<Html> <head> <script src = "prototype.js"> </ script> </ head> <body> <a href="javascript:void loadTab('tab1.html' )"> Tab 1 </ a > | <a href="javascript:void loadTab('tab2.html' )"> Tab 2 </a> | <a href="javascript:void loadTab('tab3.html' )"> Tab 3 </a> <div id = "content" style = "padding: 5px; border: 2px solid black;"> </ div> <script> function loadTab (tab) {new Ajax.Updater ( 'content', tab, {method: 'get'}); } LoadTab ( 'tab1.html'); </ Script> </ body> </ html>

На початку файлу поміщена посилання на бібліотеку Prototype.js, яка бере на себе всю роботу з Ajax. Потім слід набір посилань на різні сторінки, причому натискання на кожну посилання призводить до виклику функції loadTab для поновлення області, в яку завантажується видиме вміст. Ця область є елементом <div> з ідентифікатором content. Функція loadTab викликає метод Ajax.Updater для завантаження зазначеного документа HTML всередину цього елемента.

В лістингу 2 показана перша закладка в файлі HTML. Всі інші файли виглядають аналогічно.

Лістинг 2. tab1.html

Tab 1

У браузері ця сторінка виглядає приблизно як на малюнку 1 .

Малюнок 1. Первісний вигляд сторінки з закладками
Ajax і XML   Використання Ajax для створення таблиць, закладок і глайдеров   Серія контенту:   Цей контент є частиною # з серії # статей: Ajax і XML   https://www

Якщо ж кликнути мишею на другий закладці, то сторінка набуде вигляду як на малюнку 2 .

Малюнок 2. Форма сторінки після вибору другої закладки

Якщо ви хочете побачити цей приклад в реальному виконанні, то подивіться нашу Якщо ви хочете побачити цей приклад в реальному виконанні, то подивіться нашу   online-демонстрацію online-демонстрацію .

Того ж ефекту можна домогтися за допомогою прихованих елементів <div> з попередньо завантаженим вмістом, керуючи їх видимістю. Перевагою підходу на основі Ajax є те, що вміст закладок завантажується тільки в міру необхідності. Таким чином знижується час на завантаження сторінки, причому якщо користувач вирішить не переглядати закладку, то її вміст не буде завантажено зовсім.

У наступних трьох прикладах ілюструється робота з таблицями з використанням методів на основі Ajax (або схожих технологій).

Основи роботи з таблицями в Ajax

Спочатку ми розглянемо приклад створення таблиці з відправкою XML-запиту на сервер за допомогою Ajax. У цього методу є два переваги. По-перше, він дозволяє завантажувати дані в міру необхідності і оновлювати їх за місцем, що покращує сприйняття призначеного для користувача інтерфейсу. По-друге, для роботи цього методу потрібно джерело XML-даних, який буде корисний не тільки в разі Ajax, але і при використанні будь-якого клієнтського коду, який очікує дані в форматі XML.

Код прикладу створення таблиці з XML-даних наведено в лістингу 3 .

Лістинг 3. index.html

<Html> <head> <script src = "prototype.js"> </ script> </ head> <body> <table id = "books"> </ table> <script> new Ajax.Request ( 'books. xml ', {method:' get ', onSuccess: function (transport) {var bookTags = transport.responseXML.getElementsByTagName (' book '); for (var b = 0; b <bookTags.length; b ++) {var author = bookTags [b] .getElementsByTagName ( 'author') [0] .firstChild.nodeValue; var title = bookTags [b] .getElementsByTagName ( 'title') [0] .firstChild.nodeValue; var publisher = bookTags [b] .getElementsByTagName ( 'publisher') [0] .firstChild.nodeValue; var elTR = $ ( 'books'). insertRow (-1); var elTD1 = elTR.insertCell (-1); elTD1.innerHTML = author; var elTD2 = elTR .insertCell (-1); elTD2.innerHTML = title; var elTD3 = elTR.insertCell (-1); elTD3.innerHTML = publisher;}}}); </ Script> </ body> </ html>

Якщо ви хочете побачити приклад створення таблиці в реальному виконанні, то подивіться нашу Якщо ви хочете побачити приклад створення таблиці в реальному виконанні, то подивіться нашу   online-демонстрацію online-демонстрацію .

Обробник події onSuccess при виклику Ajax.Request розбирає XML-дані, спочатку вибираючи елементи, що описують книги. Потім вибираються значення вкладених тегів author, title і publisher. Нарешті, обробник додає дані в таблицю, викликаючи методи insertRow і insertCell для кожної книги.

Приклад формату XML, що використовується в цьому прикладі, наведено в лістингу 4 .

Лістинг 4. books.xml

<Books> <book> <author> Jack Herrington </ author> <title> Code Generation In Action </ title> <publisher> O'Reilly </ publisher> </ book> <book> <author> Jack Herrington </ author> <title> Podcasting Hacks </ title> <publisher> O'Reilly </ publisher> </ book> <book> <author> Jack Herrington </ author> <title> PHP Hacks </ title> <publisher> O 'Reilly </ publisher> </ book> </ books>

Зовнішній вигляд таблиці в DHTML показаний на малюнку 3 .

Малюнок 3. Зовнішній вигляд таблиці, побудованої за даними XML

Цей приклад відмінно працює в умовах невеликих наборів даних, але що буде, якщо їх обсяг зросте?

Посторінковий вивід сторінок за допомогою Ajax

Для посторінкового виведення таблиць за допомогою Ajax я продемонструю дещо інший підхід. Він не є строго обов'язковим, при бажанні можна легко модифікувати метод на основі розбору XML, показаний вище. Однак мені б хотілося охопити різні способи роботи з таблицями, щоб ви могли вибрати той з них, який найкращим чином відповідає вимогам вашого застосування.

В даному випадку буде використовуватися джерело даних на PHP, який буде видавати блоки HTML-коду для різних сторінок таблиці. Початкова секція HTML-коду показана в лістингу 5 .

Лістинг 5. index.html

<Html> <head> <script src = "prototype.js"> </ script> </ head> <body> <div> <a href="javascript:void updateTable(0);"> 1 </a> | <a href="javascript:void updateTable(1);"> 2 </a> | <a href="javascript:void updateTable(2);"> 3 </a> | <a href="javascript:void updateTable(3);"> 4 </a> | <a href="javascript:void updateTable(4);"> 5 </a> | <a href="javascript:void updateTable(5);"> 6 </a> </ div> <div id = "states"> </ div> <script> function updateTable (start) {new Ajax.Updater ( 'states', 'stats.php? start =' + (start * 10) + '& count = 10', {method: 'get'}); } UpdateTable (0); </ Script> </ body> </ html>

Більшу частину сторінки складають посилання на різні сторінки таблиці. Вміст таблиці, отримане від сторінки stats.php, завантажується в елемент states <div>.

Для демонстрації таблиці, що складається з декількох сторінок, знадобиться великий набір даних. Для цього буде використовуватися статистика по населенню США, а також PHP-функція getdata, яка буде повертати масив штатів і їх населення по роках. Фрагмент коду цієї функції наведено в лістингу 6 .

Лістинг 6. data.php

<? Php function getdata () {$ population = array (); $ Population [] = array ( 'Alabama', 4447100,4527166,4596330,4663111,4728915,4800092,4874243); $ Population [] = array ( 'Alaska', 626932,661110,694109,732544,774421,820881,867674); ... $ population [] = array ( 'Wyoming', 493782,507268,519886,528005,530948,529031,522979); return $ population; }?>

Для отримання цих даних порціями я створив сторінку stats.php, яка приймає на вхід початок і кінець часового інтервалу і повертає HTML-таблицю, що містить відповідну порцію статистики. Сторінка показана в лістингу 7 .

Лістинг 7. stats.php

<Table> <? Php require 'data.php'; $ Data = getdata (); $ Start = 0; $ Count = count ($ data); if (array_key_exists ( 'start', $ _GET)) $ start = $ _GET [ 'start']; if (array_key_exists ( 'count', $ _GET)) $ count = $ _GET [ 'count']; $ Index = 0; foreach ($ data as $ state) {if ($ index> = $ start && $ index <$ start + $ count) {?&gt; <tr> <? php foreach ($ state as $ item) {?&gt; <td> <? php echo ($ item); ?&gt; </ Td> <? Php}?> </ Tr> <? Php} $ index + = 1; }?> </ Table>

При відкритті сторінки в браузері перша сторінка таблиці завантажується автоматично ( малюнок 4 ).

Малюнок 4. Зовнішній вигляд таблиці з посторінковим висновком

Інші дані в таблицю завантажуються динамічно при натисканні на посилання. на малюнку 5 показано, що станеться при виборі мишею другої сторінки даних.

Малюнок 5. Друга сторінка таблиці

Якщо ви хочете побачити приклад створення таблиці зі сторінками в реальному виконанні, то подивіться нашу Якщо ви хочете побачити приклад створення таблиці зі сторінками в реальному виконанні, то подивіться нашу   online-демонстрацію online-демонстрацію .

Цей метод схожий на той, що використовувався в прикладі з закладками. Передача даних в форматі HTML через Ajax часто також ефективна, як і в XML. При цьому такий підхід виявляється навіть простіше для браузера, оскільки не доводиться розбирати XML і перетворювати його в HTML.

Далі розглянемо найбільш простий з методів, що не використовують Ajax, для динамічного створення таблиць.

Приховані таблиці з розбивкою на сторінки

В лістингу 8 показаний простий метод створення таблиць з посторінковим висновком без використання Ajax на стороні сервера.

Лістинг 8. index.php

<Html> <head> <script src = "prototype.js"> </ script> </ head> <body> <div> <? Php require ( 'data.php'); $ Data = getdata (); $ States = count ($ data) / 10; for ($ s = 0; $ s <$ states; $ s ++) {?> <? php echo ((($ s == 0)? '': '|')); ?> <a href="javascript:void updateTable(<?php echo( $s) ?>); "> <? Php echo ($ s + 1)?> </a> <? Php}?> </ div> <? php $ index = 0; foreach ($ data as $ state) {?> <? php if ($ index% 10 == 0) {?> <? php if ($ index> 0) {?> </ table> </ div> <? php}?> <div id = "states <? php echo ($ index / 10)?>" style = "display: none;"> <table> <? php}?&gt; <tr> <? php foreach ($ state as $ item) {?&gt; <td> <? php echo ($ item); ?&gt; </ Td> <? Php}?> </ Tr> <? Php $ index + = 1; }?> </ Table> </ div> <script> function updateTable (id) {var elStateDivs = []; <? Php for ($ s = 0; $ s <$ states; $ s ++) {?> ElStateDivs.push ($ ( 'states <? Php echo ($ s)?>')); <? Php}?> For (var i = 0; i <elStateDivs.length; i ++) {if (i == id) elStateDivs [i] .show (); else elStateDivs [i] .hide (); }} UpdateTable (0); </ Script> </ body> </ html>

В даному прикладі використовується код на PHP для створення набору тегів <div>, по одному на кожну сторінку в таблиці. Перший тег відображається за замовчуванням, а решта ховаються. Функція updateTable показує і приховує різні порції сторінки в залежності від обраної сторінки.

Якщо ви хочете побачити приклад роботи з прихованими таблиці з посторінковим розбиттям в реальному виконанні, то подивіться нашу Якщо ви хочете побачити приклад роботи з прихованими таблиці з посторінковим розбиттям в реальному виконанні, то подивіться нашу   online-демонстрацію online-демонстрацію .

Зверніть увагу, що в прикладі і раніше використовується бібліотека Prototype.js, хоча підтримка Ajax не потрібно. З її допомогою легше управляти елементам <div> через надані нею методи $ (), show і hide.

Зовнішній вигляд сторінки показаний на малюнку 6 .

Малюнок 6. Зовнішній вигляд таблиці з фіктивним посторінковим розбиттям

В останньому прикладі використання Ajax мова піде про елемент під назвою глайдер. Він надає новий спосіб відображення інформації, динамічно зрушуючи її вліво або вправо при переході з однієї сторінки на іншу.

глайдери

Для реалізації ефекту зсуву сторінок буде потрібно кілька додаткових бібліотек. Першою з них буде Scriptaculous - бібліотека, реалізована на основі Prototype.js. Вона надає засоби реалізації ефектів, використовуваних глайдерами. Крім неї буде також використовуватися бібліотека Glider.

В лістингу 9 показаний приклад глайдера.

Лістинг 9. index.html

<Html> <head> <link rel = "stylesheet" href = "stylesheets / glider.css" type = "text / css"> <script src = "javascripts / prototype.js"> </ script> <script src = "javascripts / effects.js"> </ script> <script src = "javascripts / glider.js"> </ script> </ head> <body> <div id = "glider"> <div class = "controls" > <a href="#tab1"> Tab 1 </a> | <a href="#tab2"> Tab 2 </a> | <a href="#tab3"> Tab 3 </a> | <a href="#tab4"> Tab 4 </a> </ div> <div class = "scroller"> <div class = "content"> <div class = "section" id = "tab1"> Tab 1 </ div> <div class = "section" id = "tab2"> Tab 2 </ div> <div class = "section" id = "tab3"> Tab 3 </ div> <div class = "section" id = "tab4"> Tab 4 </ div> </ div> </ div> </ div> <script> new Glider ( 'glider', {duration: 0.5}); </ Script> </ body> </ html>

Якщо ви хочете побачити елемент глайдер в реальному виконанні, то подивіться нашу Якщо ви хочете побачити елемент глайдер в реальному виконанні, то подивіться нашу   online-демонстрацію online-демонстрацію .

У верхній частині сторінки підключаються кілька скриптових бібліотек. Потім слід елемент <div> глайдера, який містить <div> з ідентифікатором controls з посиланнями на кожну закладку, а також іншої <div> з ідентифікатором scroller, в якому ви побачите уміст кожної закладки. Скрипт в нижній частині сторінки створює об'єкт Glider з ID, рівним ідентифікатором елемента <div> глайдера.

При відкритті сторінки в браузері вона виглядає так, як показано на малюнку 7 .

Малюнок 7. Приклад реалізації закладок за допомогою глайдера

При виборі іншого закладки її вміст плавно висувається на екран.

висновок

У цій статті було показано лише кілька типів інтерфейсних елементів, які можна створювати за допомогою Ajax, PHP і бібліотеки Prototype.js. Сподіваюся, деякі з цих ідей ви зможете застосувати в своїх Web-додатках. Вони досить прості, причому Prototype.js дійсно робить роботу з Ajax тривіальної. Якщо ви хочете поділитися своїм вдалим досвідом застосування Ajax, то ви можете це зробити в форумі Ajax на сайті developerWorks . Ми будемо раді про нього дізнатися.

Ресурси для скачування

Схожі теми

  • Оригінал статті: " Ajax and XML: Ajax for tables ". (EN)
  • зайдіть на домашню сторінку PHP , Що містить безцінні матеріали для PHP-програмістів. (EN)
  • бібліотека Prototype : Прочитайте про можливості цієї інфраструктури JavaScript, створеної для спрощення розробки динамічних Web-додатків. (EN)
  • JavaScript-бібліотека Scriptaculous : В ній ви знайдете кошти для додавання до вашого Web-сайту різних ефектів, відмінно доповнюють інфраструктуру на основі Prototype. (EN)
  • Зверніться до документації по Prototype.js за додатковою інформацією про бібліотеку Prototype. Крім того, на цій сторінці ви знайдете посилання на офіційний блог Prototype і багато інших матеріалів. (EN)
  • прочитайте про jQuery - ще одній бібліотеці JavaScript, що володіє схожими з Prototype.js можливостями. (EN)
  • ознайомтеся з Yahoo! User Interface Library - інструментарієм Ajax, розробленим Yahoo! (EN)
  • прочитайте про елементі управління Glider , Що представляє собою свіже рішення для реалізації закладок. (EN)
  • Завантажте ознайомлювальні версії програмного забезпечення IBM : Використовуйте у вашому наступному проекті ознайомчі версії ПЗ, які можна отримати прямо з сайту IBM developerWorks. (EN)

Підпишіть мене на повідомлення до коментарів

Jsp?
Php?
Population [] = array ( 'Wyoming', 493782,507268,519886,528005,530948,529031,522979); return $ population; }?
Gt; <tr> <?
Php foreach ($ state as $ item) {?
Gt; <td> <?
Php echo ($ item); ?
Gt; </ Td> <?
Php}?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: