Задача написания конвертера с обновлением курса валюты довольно тривиальна.
Можно просто взять XML интерфейс одного из банков, средствами PHP распарсить нужную валюту, сохранить данные в кэш, чтобы больше не тревожить банк.
Кэш можно обновлять с заданным интервалом, получая в нужный момент актуальные данные для конвертера.
Всё это можно сделать с применением AJAX, адаптивной вёрстки и прочих плюшек, в итоге получив красивый и функциональный виджет для сайта или даже целый модуль для вашей CMS.
Однако что можно сделать, если нет возможности применить серверную обработку данных?
Если никак нельзя получить данные с помощью PHP?
Если просто нет доступа к скриптам на сервере (такое часто встречается, если используется конструктор сайтов или лендингов)?
Как бы поступили Вы?
И вот представьте, что именно такие исходные данные заказчик добавляет в техническое задание сайта, когда работа уже подходит к концу.
Всё уже разработано: загрузка данных по валютам из банка, парсинг валют, кэширование результатов, вывод их пользователю, виджет и всё всё всё…
Но не будем унывать раньше времени: непростые задачи помогают повысить квалификацию.
Итак, что мы имеем:
- Необходимо получить данные о курсах валют с сайта банка
- Распарсить данные
- Подставить эти данные в форму конвертера валют
- Организовать собственно сам функционал подсчёта
- Сделать всё без применения PHP и AJAX
Мы будем использовать сторонний сервис для получения данных с сайта банка: https://query.yahooapis.com
Который любезно получит для нас данные с помощью того же jQuery get:
$.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27httpss%3A%2F%2Fwww.cbr.ru%2Fscripts%2FXML_daily.asp%3Fdate_req%3D' + curDate + '%27&format=json&callback=', function(data) { if (data != 'ERR') { var rates = ''; $(data.query.results.ValCurs.Valute).each(function(key, value) { if (-1 != $.inArray(value.CharCode, curCodes)) { curRate = value.Value.substring(0,5); curRate = curRate.replace(/,/g, "."); curRate = parseFloat(curRate); curRate = curRate.toString().substring(0,5); } $('#rates').html(rates); $('#rate-cur').html(curRate); $('#rate-rur').val(curRate); }); } else { $('#rates').html('<li>Данные недоступны</li>'); $('#rate-cur').html('ERR'); }
Ну а дальше мы просто подставляем нужные данные в наш конвертер и имеем всегда свежий курс валют без использования серверных скриптов.
И вот, что в итоге у нас получилось: