Чтение онлайн

на главную - закладки

Жанры

Основы программирования на JavaScript

Кан Марк

Шрифт:

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

Файл 1

{contacts:[

{"firstname":"Steve" ,"lastname":"Smith", "phone":"555-1212"},

{"firstname":"Joe" ,"lastname":"Stevens", "phone":"555-0193"},

{"firstname":"Sam" ,"lastname":"Smith", "phone":"555-5120"},

{"firstname":"Dave" ,"lastname":"Stevens", "phone":"555-0521"},

{"firstname":"Suzy" ,"lastname":"Smith", "phone":"555-9410"},

{"firstname":"Jessica" ,"lastname":"Stevens", "phone":"555-8521"},

{"firstname":"James" ,"lastname":"Smith", "phone":"555-4781"},

{"firstname":"Jacob" ,"lastname":"Stevens", "phone":"555-9281"},

{"firstname":"Alex" ,"lastname":"Smith", "phone":"555-7261"},

{"firstname":"Tam" ,"lastname":"Stevens", "phone":"555-1820"}

]}

Файл 2

{contacts:[

{"firstname":"Nancy" ,"lastname":"Smith", "phone":"555-9583"},

{"firstname":"Elane" ,"lastname":"Stevens", "phone":"555-7281"},

{"firstname":"Shawn" ,"lastname":"Smith", "phone":"555-5782"},

{"firstname":"Jessie" ,"lastname":"Stevens", "phone":"555-7312"},

{"firstname":"Matt" ,"lastname":"Smith", "phone":"555-4928"},

{"firstname":"Jason" ,"lastname":"Stevens", "phone":"555-3917"},

{"firstname":"Daniel" ,"lastname":"Smith", "phone":"555-8711"},

{"firstname":"Shannon" ,"lastname":"Stevens", "phone":"555-0912"},

{"firstname":"Diana" ,"lastname":"Smith", "phone":"555-6172"},

{"firstname":"Mark" ,"lastname":"Stevens", "phone":"555-8831"}

]}

Файл 3

{contacts:[

{"firstname":"Laura" ,"lastname":"Stevens", "phone":"555-3915"},

{"firstname":"Jeff" ,"lastname":"Smith", "phone":"555-8614"},

{"firstname":"Frank" ,"lastname":"Stevens", "phone":"555-0213"},

{"firstname":"Elizabeth" ,"lastname":"Smith", "phone":"555-7531"},

{"firstname":"Jim" ,"lastname":"Stevens", "phone":"555-3951"}

]}

Эти

файлы будут обеспечивать все данные для нашего списка контактов на AJAX. Построение списка контактов является в действительности вполне простым: создается таблица TABLE для хранения всех контактов и функция для очищения и повторного заполнения этой таблицы. Вот и все.

<table cellspacing="1" cellpadding="3" bgcolor="#000000" style="font-family:tahoma;font-size:10px;">

<tbody id="contactListTable">

<tr style="background-color:#CCF;">

<th>First Name</th>

<th>Last Name</th>

<th>Phone #</th>

</tr>

</tbody>

</table>

function loadContactListPage(n){

var oXML = getXMLHttpObj;

oXML.open('GET', '/img/10_json_file'+n+'.txt', true);

oXML.onreadystatechange = function{ doneLoading(oXML); }

oXML.send('');

}

function doneLoading(oXML){

if(oXML.readyState!=4) return;

var json = eval('('+oXML.responseText+')');

var table = document.getElementById('contactListTable');

for(var i=table.childNodes.length-1; i>0; i--){

table.removeChild(table.childNodes[i]);

}

for(var i=0; i<json.contacts.length; i++){

var tr = document.createElement('TR');

var td1 = document.createElement('TD');

var td2 = document.createElement('TD');

var td3 = document.createElement('TD');

tr.style.backgroundColor = i%2?'#FFF':'#E6E6E6';

table.appendChild(tr);

tr.appendChild(td1);

tr.appendChild(td2);

tr.appendChild(td3);

td1.appendChild(document.createTextNode(json.contacts[i].firstname));

td2.appendChild(document.createTextNode(json.contacts[i].lastname));

td3.appendChild(document.createTextNode(json.contacts[i].phone));

}

}

Демонстрационный

пример

First Name Last Name Phone #

Steve Smith 555-1212

Joe Stevens 555-0193

Sam Smith 555-5120

Dave Stevens 555-0521

Suzy Smith 555-9410

Jessica Stevens 555-8521

James Smith 555-4781

Jacob Stevens 555-9281

Alex Smith 555-7261

Tam Stevens 555-1820

Page 1 | Page 2 | Page 3

Как можно видеть из примера выше, это все достаточно просто. Большая часть кода нужна в действительности просто для создания новых строк в таблице.

AJAX может быть удивительно полезным инструментом. Его можно использовать для проверки форм перед их отправкой, для извлечения данных, как в этом примере, или для чего-то еще, что можно будет придумать. Однако в нормальной ситуации он не должен быть основным элементом Web-сайта. Обычно надо быть уверенным, что сайт будет доступен, даже если JavaScript будет отключен, но всегда существуют некоторые исключения для этого правила.

Следующая лекция будет посвящена обработке ошибок в JavaScript.

Поделиться:
Популярные книги

Эволюционер из трущоб. Том 4

Панарин Антон
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 4

Как я строил магическую империю 6

Зубов Константин
6. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 6

Заход. Солнцев. Книга XII

Скабер Артемий
12. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Заход. Солнцев. Книга XII

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Ты - наша

Зайцева Мария
1. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Ты - наша

Неудержимый. Книга XXVI

Боярский Андрей
26. Неудержимый
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXVI

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Личный аптекарь императора. Том 3

Карелин Сергей Витальевич
3. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 3

Черный Маг Императора 7 (CИ)

Герда Александр
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)