|
Вывод курса валют
Здравствуйте!
Подскажите пожалуйста я полный ноль в json и js Нужно вывести курс доллара со стрелкой в блок class или id. Дальше я сам могу. Есть такой скрипт там уже готовый вариант, просто вставить и всё. Но там показывает не точный курс в формате jsonp есть вариант с точным курсом, там простой json Пожалуйста помогите вывести курс в div блок? |
Подскажите, пожалуйста, тут есть кто?
|
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="usd"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { $('#usd').html(data.Valute.USD.Nominal+" Доллар -> "+ data.Valute.USD.Value+" Рублей"); }); </script> </body> </html> |
Ух ты так просто, спасибо огромное, а можно немного сократить?
57.2196 так 57.21 и стрелку добавить, роста или падения? Иконки не работают <script> $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { $('#usd').html(data.Valute.USD.Nominal+" <i class="fa fa-usd" aria-hidden="true"></i> "+ data.Valute.USD.Value+" <i class="fa fa-rub" aria-hidden="true"></i>"); }); </script> |
Когда выводится пишется число "1" - 1$ 57.2196 руб. Как его убрать?
|
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="usd"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script defer src="https://use.fontawesome.com/releases/v5.0.6/js/all.js"></script> <script> $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { $('#usd').html((data.Valute.USD.Value<data.Valute.USD.Previous?'<i class="fas fa-long-arrow-alt-down"></i>':'<i class="fas fa-long-arrow-alt-up"></i>')+'<i class="fas fa-dollar-sign"></i>'+data.Valute.USD.Value.toFixed(2)+' <i class="fas fa-ruble-sign"></i>'); }); </script> </body> </html> |
Лучше сократить:
.... var usd = data.Valute.USD; $('#usdv').html('<i class="fas fa-long-arrow-alt-'+(usd.Value < usd.Previous ? 'down' : 'up')+.... PS. Это замечанию автору. Если сайт завязан на фондовый рынок или товарную биржу, тогда да, динамика курса валюты важна. Но если сайт, это магазин бубликов, то динамически изменяемый курс вреден. Курс валют устанавливается по окончании торгов на валютной бирже, и запрос к СБ нужно делать только один раз - если в локальном хранилище нет курса или локальное хранилище содержит курс не текущей даты. |
laimas,
Цитата:
|
Цитата:
|
Цитата:
|
Спасибо, вам)))
У меня обычный портал города))) С погодой и новостями) |
Вот так сделал как лучше?
<script> $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { var Value = data.Valute.USD.Value var Previous = data.Valute.USD.Previous function trend(Value, Previous) { if (Value > Previous) return '<b style="color:#00ff00;"> ▲</b>'; if (Value < Previous) return '<b style="color:#ff0000;"> ▼</b>'; return ''; } var trend = trend(data.Valute.USD.Value, data.Valute.USD.Previous); $('#usd').html("USD ЦБ " +data.Valute.USD.Value.toFixed(1) +trend); }); </script> |
Цитата:
|
Цитата:
|
Я подумал, а как можно вывести два курса Доллара и евра на две даты?
Как на самок сайте ЦБ РФ ? Что бы было видно что будет дальше. Подскажите? |
Цитата:
Курс на период. Это надо на сайте СБ смотреть, я не могу сказать по данному запросу, я использую SOAP сервер СБ для получения курса, и в нем можно получить курсы за период. Возможно и в данном запросе такое есть, значит нужно будет просто передать определенные параметры в запросе. |
Я просто не понимаю js
Можно вывести, курс доллара на сегодня и завтра, там есть два параметра "Value": 57.2196, "Previous": 56.6278 |
Цитата:
Еще раз. Вы отображаете не установленный курс, а динамику курса. Если хотите отображать установленный курс, значит запрашивайте его один раз, до начала торгов, вот тогда Previous, это вчерашний, а Value сегодняшний курсы. А еще правильнее, запрашивать курс за период, читайте API, параметры запроса, это не JS, понять не сложно. |
Всё понятно, спасибо большое))) Скажите в чём разница я выше прислал скрипта, который показывает стрелки? Там два варианта, какой лучше?
|
Цитата:
var Value = data.Valute.USD.Value var Previous = data.Valute.USD.Previous конечно же неверно. |
Цитата:
что не верно? что то я запутался уже...) |
Цитата:
Но, если для Value (будем считать, что это текущий курс) можно сравнить с Previous и нарисовать стрелочку, то что и с чем нужно будет сравнивать для Previous (будем считать, что это вчерашний курс), чтобы нарисовать стрелочку? Не с чем. Ответ ищите на сайте СБ РФ в описании API и получайте курс валют за период. Если API этого запроса позволяет получать курсы только запрошенных валют, то и это учесть, чтобы не грузить лишнее. |
Спасибо, теперь всё понятно.
|
laimas,
Цитата:
Пример j0hnik как в 3 ночи, так и сейчас показывает 57.2196. Завтра будет показывать новый курс |
Цитата:
А запрос надо делать все-таки один раз при любом раскладе. |
Dilettante_Pro,
все верно, дело в запросе, получается, что запрос браузером выдает курс по датам соответствующим текущей локальной минус день, а запрос скриптом выдаст курс по датам текущей локальной минус день, а вчерашняя уже минус два дня от текущей локальной. То есть в одном случае учитывается часовой пояс, в другом нет. А я не на дату посмотрел, а что там в USD вообще творится. Вот это подвело меня, зафиксировал изменение. :) |
j0hnik,
По первому скрипту где курс доллара ещё не обновился, так как данные берутся со стороннего хостинга. в интернете нашёл другой PHP скрипт. ссылка на скрипт демо Третий простой скрипт В этих скриптах данные уже берутся с оф сайта ЦБ РФ. $url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.$date_yesterday.'&date_req2='.$date_today.'&VAL_NM_RQ='.$value ; $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Ссылка на XML-файл с курсами валют Такой вопрос, вчера решали на форуме и не получилось. У меня сайт на ucoz там не подключён php, поэтому я выбрал предыдущий вариант с json. Есть хостинг на стороннем сайте. Загружаю туда скрипты они работаю, стрелки всё показывают. Как можно перенести данные на юкоз где нет php Если между тегами <iframe></iframe> вставить ссылку на *.php то всё работает как информер. Но мне нужно данные чиста отстилизовате через css что бы подходило под дизайн сайта. Как с php хостинга перекинуть на сайт? простые значения например: $ 56.77 ▲ Подскажите как нужно прописать? Если напрямую добавлять пхп скрипт на страницу то он не будет работать никакими манипуляциями, а нужно вывести значения примера выше. |
Происходит что то непонятное!
В гугл хроме на пк, в браузере открывается один курс, а если включить режим шпиона показывается другой курс https://www.cbr-xml-daily.ru/daily_json.js ![]() |
Эта бодяга убедила вчера меня в том, что это запрос динамики курса, так как я зафиксировал изменения трижды.
Курсы нужно получать с сайта ЦБ. Первый способ древний - получение xml (хотя в основе и других способов тоже xml). Для этого, например, запрос курса доллара за период 7-8 числа: http://www.cbr.ru/scripts/XML_dynami...L_NM_RQ=R01235 Коды валют http://www.cbr.ru/scripts/XML_val.asp?d=0, прочая информация http://www.cbr.ru/development/SXML/. Также есть SOAP сервер. Но все это доступно только через сервер, на клиенте доступ будет заблокирован. На убогом ucoz РНР есть, как подключить php скрипт читайте у них в техподдержке, есть и форум у них. |
laimas,
Дело в том что я подключил php на стороне так как на юкоз очень дорого! Вот и спрашиваю как можно передать значения на мой сайт из php ? тут решали этот вопрос не получилось Подумал что тут может на js можно что то придумать! |
Или можно как то в этот скрипт
<script> $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { var Value = data.Valute.USD.Value var Previous = data.Valute.USD.Previous function trend(Value, Previous) { if (Value > Previous) return '<b style="color:#00ff00;"> ▲</b>'; if (Value < Previous) return '<b style="color:#ff0000;"> ▼</b>'; return ''; } var trend = trend(data.Valute.USD.Value, data.Valute.USD.Previous); $('#usd').html("$ " +data.Valute.USD.Value.toFixed(2) +trend); }); </script> в див вывести в ( title="Посмотреть курс валют"><div id="usd"></div>) подсказку в виде даты с которой берётся курс? |
Цитата:
if (Value > Previous) return '<b style="color:#00ff00;"> ▲</b>'; if (Value < Previous) return '<b style="color:#ff0000;"> ▼</b>'; чушь полная, так как возросла ли валюта или нет, можно узнать только для текущего курса относительно предыдущего. |
Цитата:
data.Date |
Цитата:
(Про подсказку, просто что бы было видно за какое число данные) Сейчас в json показывает курс на завтра ![]() |
j0hnik,
так? title="data.Date - Посмотреть курс валют"><div id="usd"></div> |
|
title="Посмотреть курс валют"> - что это за тег?
в php я к сожалению не разбираюсь, может кто другой подскажет |
j0hnik,
У меня панель на сайте, там бок div <li><div class="wow fadeInLeft animated" style="visibility: visible; animation-name: bounceIn;"><a href="index/grafik_kursa_valjut/0-167" title="СЮДА ВЫВЕСТИ ДАТУ - Посмотреть курс валют"><div id="usd"></div> </div></a></li> вывести в title. Ещё вопрос если в php не разбираетесь можно js вывести данные с ЦБ РФ или нужно обязательно сервер с php? |
Цитата:
На запрос клиента к этому домену скрипт должен передавать заголовок "Access-Control-Allow-Origin: имя вашего домена", с которого клиент производит запрос. Если при этом использовать SOAP сервер, то получение может быть таким: if(PHP_SAPI == 'cli') { //установить директорию, все необходимые подключения производить относительно этой директории chdir(dirname(__FILE__)); try { //получение кураса доллара на текущую дату $client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl"); $curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d')]); $rate = new SimpleXMLElement($curs->GetCursOnDateResult->any); $result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="USD"]'); $usd = (float)$result[0]->Vcurs/(int)$result[0]->Vnom; if($usd) { //здесь сохранение курса в базе } } catch (Exception $e) { } } Здесь описание методов севера. Если использовать запрос xml, то ответ сервера разобрать посредством SimpleXML и сохранить. |
<li> <div class="wow fadeInLeft animated" style="visibility: visible; animation-name: bounceIn;"> <a href="index/grafik_kursa_valjut/0-167" title="СЮДА ВЫВЕСТИ ДАТУ - Посмотреть курс валют"> <div id="usd"></div> </div> </a> </li> Старайтесь форматировать, так будут ошибки заметнее. Посмотрите внимательно |
Часовой пояс GMT +3, время: 11:08. |
|