Форум PHP

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: confirm   (16.06.2017 в 14:54)
Запрашиваемый сервер должен давать разрешение заголовком Access-Control-Allow-Origin, в противном случае из под веб страницы браузер заблокирует доступ к нему. Данный запрашиваемый ресурс разрешает, поэтому с него асинхронным запросом получается курс валюты, раз в сутки.

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
table {
    border-collapse: separate;
    font: 13px Arial;
}

th, td {
    padding: 4px 8px;
    border: 1px solid #bbb;
}

th {
    background: #ccc;
}

em {
    font-weight: normal;
    font-size: 12px;
}
</style>
</head>
<body>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head>
<body>
<table>
    <tr>
        <th>Наименование</th>
        <th>Цена, <em>$</em></th>
        <th>Цена, <em>руб.</em></th>
    </tr>
    <tr>
        <td>название 1</td>
        <td>10</td>
        <td></td>
    </tr>
    <tr>
        <td>название 2</td>
        <td>20</td>
        <td></td>
    </tr>
    <tr>
        <td>название 3</td>
        <td>30</td>
        <td></td>
    </tr>
</table>

<script>
var mem = localStorage, //хранилище
    now = new Date().toISOString().substr(0, 10);

if(mem.curdate==undefined) { //курс по умолчанию
    mem.curdate = '2017-06-10';
    mem.current = 56.5131
}

if(mem.curdate != now) { //если в хранилище курс не текущей даты, то запрашиваем курс
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.xchange+where+pair+=+%22USDRUB%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys');
    xhr.onload = function() {
        if (xhr.status == 200) {
            try { //сохраняем курс
                now = JSON.parse(xhr.responseText).query;
                mem.curdate = now.created.substr(0, 10);
                mem.current = now.results.rate.Rate
            } catch (e) {}
        }
        convert()
    }
    xhr.send()
} else convert();

function convert() {
    [].slice.call(document.querySelector('table').rows, 1).forEach(function(tr) {
        tr.cells[2].innerHTML = Math.round(tr.cells[1].innerHTML * mem.current);
    })
}
</script>
</body>
</html>
</body>
</html>


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: