Шрифт:
"&apr=" + encodeURIComponent(apr) + //в строке запроса
"&yrs=" + encodeURIComponent(years) +
"&zip=" + encodeURIComponent(zipcode);
// Получить содержимое по заданному адресу URL с помощью XMLHttpRequest
var req = new XMLHttpRequest; // Создать новый запрос
req.open("GET", url); // Указать тип запроса HTTP GET для url
req.send(null); // Отправить запрос без тела
// Перед возвратом зарегистрировать обработчик события, который будет вызываться
// при получении HTTP-ответа от сервера. Такой прием асинхронного программирования
// является довольно обычным в клиентском JavaScript,
req.onreadystatechange = function {
if (req.readyState == 4 && req.status == 200) {
// Если мы попали сюда, следовательно, был получен корректный НТТР-ответ
var response = req.responseText; // HTTP-ответ в виде строки
var lenders = JSON.parse(response); // Преобразовать в JS-массив
// Преобразовать массив объектов lender в HTML-строку
var list = "";
for(var і = 0; і < lenders.length; i++) {
list += "<li><a href=' " + lenders[i].url + " '>"+
lenders[i].name + "</a>";
}
// Отобразить полученную HTML-строку в элементе,
// ссылка на который была получена выше.
ad.innerHTML = "<ul>" + list + "</ul>";
}
}
}
// График помесячного изменения остатка по кредиту, а также графики сумм,
// выплачиваемых в погашение кредита и по процентам в HTML-элементе <canvas>.
// Если вызывается без аргументов, просто очищает ранее нарисованные графики,
function chart(principal, interest, monthly, payments) {
var graph = document.getElementById("graph"); // Ссылка на тег <canvas>
graph.width = graph.width; // Магия очистки элемента canvas
// Если функция вызвана без аргументов или броузер не поддерживает
// элемент <canvas>, то просто вернуть управление,
if (arguments.length == 0 || !graph.getContext) return;
// Получить объект "контекста" для элемента <canvas>,
// который определяет набор методов рисования
var g = graph.getContext("2d"); // Рисование выполняется с помощью этого объекта
var width = graph.width, height = graph.height; // Получить размер холста
// Следующие функции преобразуют количество месячных платежей
// и денежные суммы в пикселы
function paymentToX(n) { return n * width/payments; }
function amountToY(a) { return height-(a*height/(monthly*payments*1.05));}
// Платежи - прямая линия из точки (0,0) в точку (payments,monthly*payments)