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

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

Жанры

Основы программирования на 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.

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

Лекарь Империи

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

Тихие ночи

Владимиров Денис
2. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Тихие ночи

Кодекс Охотника XXXI

Винокуров Юрий
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника XXXI

Звездная Кровь. Изгой VII

Елисеев Алексей Станиславович
7. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
технофэнтези
рпг
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Изгой VII

Лейтенант космического флота

Борчанинов Геннадий
1. Звезды на погонах
Фантастика:
боевая фантастика
космическая фантастика
космоопера
рпг
фэнтези
фантастика: прочее
5.00
рейтинг книги
Лейтенант космического флота

Имперец. Том 4

Романов Михаил Яковлевич
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 4

Законник Российской Империи. Том 2

Ткачев Андрей Юрьевич
2. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
6.40
рейтинг книги
Законник Российской Империи. Том 2

Император Пограничья 5

Астахов Евгений Евгеньевич
5. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 5

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Орден Багровой бури. Книга 1

Ермоленков Алексей
1. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 1

Точка Бифуркации VIII

Смит Дейлор
8. ТБ
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации VIII

Шайтан Иван 4

Тен Эдуард
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Шайтан Иван 4

Санек 3

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

Неучтенный элемент. Том 2

NikL
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2