JavaScript. Подробное руководство, 6-е издание
Часть 11 из 535 Информация о книге
<b> payment.innerHTML = ""; </b><b> // Стереть содержимое этих элементов total.innerHTML = totalinterest.innerHTML = "";</b><b> chart(); // При вызове без аргументов очищает диаграмму</b><b> }</b><b>}</b><b>// Сохранить ввод пользователя в свойствах объекта localStorage. Значения этих свойств </b><b>// будут доступны при повторном посещении страницы. В некоторых броузерах (например.</b><b>// в Firefox) возможность сохранения не поддерживается, если страница открывается</b><b>// с адресом URL вида file://. Однако она поддерживается при открытии страницы через HTTP.</b><b>function save(amount, apr, years, zipcode) {</b><b> if (window.localStorage) { // Выполнить сохранение, если поддерживается </b><b> localStorage.loan_amount = amount; </b><b> localStorage.loan_apr = apr; </b><b> localStorage.loan_years = years; </b><b> localStorage.loan_zipcode = zipcode;</b><b> }</b><b>}</b><b>// Автоматически восстановить поля ввода при загрузке документа, </b><b>window.onload = function() {</b><b> // Если броузер поддерживает localStorage и имеются сохраненные данные </b><b> if (window.localStorage && localStorage.loan_amount) {</b><b> document.getElementById("amount").value = localStorage.loan_amount;</b><b> document.getElementById("apr").value = localStorage.loan_apr;</b><b> document.getElementById("years").value = localStorage.loan_years;</b><b> document.getElementById("zipcode").value = localStorage.loan_zipcode;</b><b> }</b><b>};</b><b>// Передать ввод пользователя серверному сценарию, который может (теоретически) возвращать </b><b>// список ссылок на сайты местных кредитных учреждений, готовых предоставить кредит.</b><b>// Данный пример не включает фактическую реализацию такого сценария поиска кредитных </b><b>// учреждений. Но если такой сценарий уже имеется, данная функция могла бы работать с ним. </b><b>function getLenders(amount, apr, years, zipcode) {</b><b> // Если броузер не поддерживает объект XMLHttpRequest, не делать ничего </b><b> if (!window.XMLHttpRequest) return;</b><b> // Отыскать элемент для отображения списка кредитных учреждений </b><b> var ad = document.getElementById("lenders”);</b><b> if (!ad) return; // Выйти, если элемент отсутствует</b><b> // Преобразовать ввод пользователя в параметры запроса в строке URL </b><b> var url = "getLenders.php" + // Адрес URL службы плюс</b><b> "?amt=" + encodeURIComponent(amount) + // данные пользователя </b><b> "&apr=" + encodeURIComponent(apr) + //в строке запроса</b><b> "&yrs=" + encodeURIComponent(years) +</b><b> "&zip=" + encodeURIComponent(zipcode);</b><b> // Получить содержимое по заданному адресу URL с помощью XMLHttpRequest</b><b> var req = new XMLHttpRequest(); // Создать новый запрос</b><b> req.open("GET", url); // Указать тип запроса HTTP GET для url</b><b> req.send(null); // Отправить запрос без тела</b><b> // Перед возвратом зарегистрировать обработчик события, который будет вызываться </b><b> // при получении HTTP-ответа от сервера. Такой прием асинхронного программирования </b><b> // является довольно обычным в клиентском JavaScript, </b><b> req.onreadystatechange = function() {</b><b> if (req.readyState == 4 && req.status == 200) {</b><b> // Если мы попали сюда, следовательно, был получен корректный НТТР-ответ </b><b> var response = req.responseText; // HTTP-ответ в виде строки</b><b> var lenders = JSON.parse(response); // Преобразовать в JS-массив</b><b> // Преобразовать массив объектов lender в HTML-строку </b><b> var list = "";</b><b> for(var і = 0; і < lenders.length; i++) {</b><b> list += "<li><a href=' " + lenders[i].url + " '>"+</b><b> lenders[i].name + "</a>";</b><b> }</b>