Вывод json на сайт
Здравствуйте.
Прошу прощение, но в java не силен, поэтому прошу помощи. Заранее благодарю. Есть json на стороннем сайте - https://api.privatbank.ua/p24api/pub...ange&coursid=5 Как мне его вывести на страницу сайта? То есть к примеру мне нужно вывести курс евро к гривне. Вот описание параметров в json - https://api.privatbank.ua/#p24/exchange |
getJSON получение и вывод json jquery
Nik_Dev,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
$.getJSON("https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5", function(data) {
var items = [];
$.each(data, function(key, val) {
var html = "";
Object.keys(val).forEach(function(key) {
if (typeof val[key] != "object") html += key + " : " + val[key] + "<br>"
});
items.push('<li id="' + key + '">' + html + "</li>")
});
$("<ul/>", {
"class": "my-new-list",
html: items.join("")
}).appendTo("#list")
})
});
</script>
</head>
<body>
<div id="list"></div>
</body>
</html>
|
Ещё можно так:
<script>function success(data){
data = data.find(e => e.ccy == "EUR" && e.base_ccy == "UAH");
alert(
'Евро к гривне'
+ '\nПокупка: ' + parseFloat(data.buy)
+ '\nПродажа: ' + parseFloat(data.sale)
);
}</script>
<script src="https://api.privatbank.ua/p24api/pubinfo?jsonp=success&exchange&coursid=5"></script>
Только jsonp я нащупал вручную, на сайте с описанием api с первого взгляда не нашёл, так что использовать с осторожностью) |
Благодарю вас, всё работает.
А как сделать выбор конкретной строки? К примеру мне нужно только евро вывести. Как на этом примере, только чтобы был не алерт, а вывод в блок. <script>function success(data){ data = data.find(e => e.ccy == "EUR" && e.base_ccy == "UAH"); alert( 'Евро к гривне' + '\nПокупка: ' + parseFloat(data.buy) + '\nПродажа: ' + parseFloat(data.sale) ); }</script> <script src="https://api.privatbank.ua/p24api/pubinfo?jsonp=success&exchange&coursid=5"></script> Цитата:
|
Спасибо Вам )
Цитата:
|
Nik_Dev,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<div id="out"></div>
<script>function success(data){
data = data.find(e => e.ccy == "EUR" && e.base_ccy == "UAH");
document.querySelector("#out").innerHTML = `Евро к гривне <br>Покупка: ${data.buy}<br>Продажа: ${data.sale}`
}</script>
<script src="https://api.privatbank.ua/p24api/pubinfo?jsonp=success&exchange&coursid=5"></script>
</body>
</html>
|
Спасибо огромное :dance:
Вы очень сильно мне помогли! Я прошу прощение за наглость, но возможно Вы мне сможете помочь еще раз? Написал в этой теме - https://javascript.ru/forum/showthread.php?p=474501 Цитата:
|
Nik_Dev,
поробуйте так ...
<script>
window.addEventListener('DOMContentLoaded', function() {
var indx = localStorage.getItem('indx');
[].forEach.call(document.querySelectorAll('.drop li'), function(item,i) {
item.addEventListener('click', function() {
localStorage.setItem('indx',i);
});
if(i == indx) {
jQuery(item).trigger('click')
jQuery('.slct').text(item.textContent)
}
});
});
</script>
|
Вложений: 1
Просто идеально, всё работает как нужно.
Вы просто гуру в своем деле ) Скажите как Вас отблагодарить можно? После праздников сделал бы небольшое пожертвование за помощь. Возвращаюсь к первоначальному вопросу, по поводу вывода курса с json. Вывод работает корректно только в главном разделе сайта, а когда пытаюсь добавить в админку или же в другие разделы, то он не выводит результаты. Вложение 3735 Возможно конфликт с другим скриптом, я не знаю как проверить... Я подключал скрипт - Курсы валют ЦБ РФ в XML, JSON/JSONP Он выводит корректно. Вот скрипт: <div id="EUR">Евро € — 00,00 руб.</div>
<script>
function CBR_XML_Daily_Ru(rates) {
var EURrate = rates.Valute.EUR.Value.toFixed(4).replace('.', ',');
var EUR = document.getElementById('EUR');
EUR.innerHTML = EUR.innerHTML.replace('00,00', EURrate);
}
</script>
<script src="//www.cbr-xml-daily.ru/daily_jsonp.js"></script>
Подскажите, пожалуйста, как сделать тот скрипт, что Вы написали, по типу скрипта ЦБ РФ. И как сделать, чтобы выводило только 4 цифры, то есть к примерку оно выводит 34.15000, а мне нужно 34.15 Цитата:
|
Цитата:
Цитата:
document.querySelector("#out").innerHTML = `Евро к гривне <br>Покупка: ${(+data.buy).toFixed(2)}<br>Продажа: ${(+data.sale).toFixed(2)}`
Цитата:
|
Вывод статистики с api
Всем привет. увидел как тут быстро решили вопрос с API
У меня тоже есть небольшая проблема с выводом. много методов попробовал, Был бы рад помощи нужно с https://api.nicehash.com/api?method=...multialgo.info с массива
{"paying":"0.00530817","port":3353,"name":"daggerhashimoto","algo":20}
вытащить результат переменной «paying» что бы вывелось только один параметр 0.00672334 для страниц html Заранее благодарю |
Цитата:
var data = {"paying":"0.00530817","port":3353,"name":"daggerhashimoto","algo":20};
alert(data.paying);
|
Цитата:
вытащить переменную пробовал так <script type="text/javascript"> $.getJSON("https://api.nicehash.com/api?method=simplemultialgo.info").done(function(da ta) { btc_etc = data.result.simplemultialgo[20].paying; document.getElementById('BTC').innerHTML = btc_etc; }); </script> |
Magomed, проксируйте запрос к api через свой сервер.
Других вариантов я не вижу. |
Цитата:
кстати на php друг смог вытащить инфу, но вот мне именно java нужно |
Magomed, Java или JavaScript?
С java проблем не должно возникнуть, второму политика безопасности не позволит отправлять кроссдоменные запросы. |
Всем привет.
нужна была еще одна помощь. есть сервис с API http://exp.mole-pool.net/api/account...1e77b79f914cf9 в самом внизу есть параметр stats":{"balance":0,"blocksFound":207,"immature":0 ,"lastShare":1525957232,"paid":772888710939,"pendi ng":0} как их этого массива вывести paid? пробовал так.
<script type="text/javascript">
$.getJSON("http://exp.mole-pool.net/api/accounts/0xbb0899fbb7060a137196a1abbe1e77b79f914cf9").done(function(data) {
totalexp = data.stats.paid;
immexp = data.stats.immature;
balexp = data.stats.balance;
document.getElementById('expTOT').innerHTML = totalexp(3);
document.getElementById('expIMM').innerHTML = immexp(3);
document.getElementById('expBAL').innerHTML = balexp(3);
});
</script>
не получается. |
Может так?
$.getJSON("http://exp.mole-pool.net/api/accounts/0xbb0899fbb7060a137196a1abbe1e77b79f914cf9").done(function(data) {
alert(data.stats.paid);
}).fail(function(xhr, textStatus) {
alert(textStatus);
});
|
Magomed,
вы вместо переменной определенной запрашиваете функцию. |
Цитата:
|
Спасибо ребята, сейчас попробую так Nexus написал
|
Цитата:
делал так <strong id="USD-ETC"></strong> но тут id не назначен. как назначить? |
$('#USD-ETC').text(data.stats.paid);
|
Ребята спасибо за помощь. оказывается все было просто. я не обратил внимание на ответ что (3) лишнее. все было банально просто. Забыл указать до (3) .toFixed(3)
в итоге
<script type="text/javascript">
$.getJSON("http://exp.mole-pool.net/api/accounts/0xbb0899fbb7060a137196a1abbe1e77b79f914cf9").done(function(data) {
totalexp = data.stats.paid * 0.000000001;
document.getElementById('expTOT').innerHTML = totalexp.toFixed(3);
});
</script>
И скрипт заработал |
Есть еще один вопрос.
$.getJSON("http://etps.mole-pool.net/api/stats").done(function(data) {
etpssh_r = data.hashrate;
etpsminer = data.minersTotal;
etpsexp = etpssh_r * 0.000001;
document.getElementById('etpsHR').innerHTML = etpsexp.toFixed(3);
document.getElementById('etpsMR').innerHTML = etpsminer;
});
$.getJSON("http://vic.mole-pool.net/api/stats").done(function(data) {
vich_r = data.hashrate;
vicminer = data.minersTotal;
vicexp = vich_r * 0.000001;
document.getElementById('vicHR').innerHTML = vicexp.toFixed(3);
document.getElementById('vicMR').innerHTML = vicminer;
});
$.getJSON("http://aura.mole-pool.net/api/stats").done(function(data) {
aurach_r = data.hashrate;
auraminer = data.minersTotal;
auraexp = aurach_r * 0.000001;
document.getElementById('auraHR').innerHTML = auraexp.toFixed(3);
document.getElementById('auraMR').innerHTML = auraminer;
});
таких скриптов с выводом статистики много. мне нужно с каждого скрипта сложить все строки aurach_r = data.hashrate; где "aurach_r" переменные разных скриптов |
Magomed,
и зачем трижды запрашивать у сервера одни и те же данные? |
Там же не одни и те же. сервисы с которых апи тяну разные. ссылки с статой
|
Magomed,
http://api.jquery.com/jQuery.when/ |
Да, я только на хвосте url сосредоточился, так как обрабатываются одни и те же данные. Получается у всех трех структура одна и тот же.
Для того чтобы оперировать данными от трех ответов нужно использовать promise, запросы то асинхронные. Известно такое? |
Magomed,
$(function() {
var a = $.getJSON("http://etps.mole-pool.net/api/stats").done(function(data) {
etpssh_r = data.hashrate;
etpsminer = data.minersTotal;
etpsexp = etpssh_r * 0.000001;
document.getElementById('etpsHR').innerHTML = etpsexp.toFixed(3);
document.getElementById('etpsMR').innerHTML = etpsminer;
});
var b = $.getJSON("http://vic.mole-pool.net/api/stats").done(function(data) {
vich_r = data.hashrate;
vicminer = data.minersTotal;
vicexp = vich_r * 0.000001;
document.getElementById('vicHR').innerHTML = vicexp.toFixed(3);
document.getElementById('vicMR').innerHTML = vicminer;
});
var c = $.getJSON("http://aura.mole-pool.net/api/stats").done(function(data) {
aurach_r = data.hashrate;
auraminer = data.minersTotal;
auraexp = aurach_r * 0.000001;
document.getElementById('auraHR').innerHTML = auraexp.toFixed(3);
document.getElementById('auraMR').innerHTML = auraminer;
});
$.when( a, b, c ).done(function( a, b, c ) {
var data = a[0].hashrate + b[0].hashrate + c[0].hashrate;
alert( data );
});
});
|
Если много и однотипно, то можно так:
Promise.all([{
url: "http://etps.mole-pool.net/api/stats",
id: "etps"
}, {
url: "http://vic.mole-pool.net/api/stats",
id: "vic"
}, {
url: "http://aura.mole-pool.net/api/stats",
id: "aura"
}].map(
({url, id}) => fetch(url)
.then(response => response.json())
.then(data => {
let r = data.hashrate;
let miner = data.minersTotal;
let exp = r * 1e-6;
document.getElementById(id + "HR").textContent = exp.toFixed(3);
document.getElementById(id + "MR").textContent = miner;
return r;
})
)).then(rates => {
alert(rates.reduce((m, v) => m + v));
});
|
Оба варианта заработали. Сасибо.
есть просьба. когда ставлю alert(rates.reduce((m, v) => m + v)); то на странице отдельным баннером как бы высвечивает ответ. а как сделать что бы вывести на страницу в конкретном месте. обычно я выводил посредством строки document.getElementById(HR).textContent = exp.toFixed(3); и на сайте указывал в нужном месте строку <strong id="HR"></strong> в данном случае не работает такой принцип |
А все. разобрался
alert(rates.reduce((m, v) => m + v)); document.getElementById('HR').innerHTML = rates.reduce((m, v) => m + v).toFixed(3); }); var obj=document.getElementById('HR'); |
Подскажите, пожалуйста, в чем моя ошибка?
$.getJSON('http://moonwalk.co/api/videos.json?kinopoisk_id=4561&api_token=d10a8f4368bc3a6e26b11477ad939da1').done(function(data) {
alert(data.iframe_url);
}).fail(function(xhr, textStatus) {
alert(textStatus);
});
|
Zufarro,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
если и там не работает, гуглить «Отсутствует заголовок CORS «Access-Control-Allow-Origin» |
спасибо
|
| Часовой пояс GMT +3, время: 16:29. |