AJAX и ЦБР, курсы валют

iceman

говнокодер
AJAX и ЦБР, курсы валют

FF 3.5.2, win7 x86
PHP:
function createRequestObject()
{
    if (window.XMLHttpRequest) {
        try {
            return new XMLHttpRequest();
        } catch (e){
            alert('Catch new XMLHttpRequest()');
        }
    } else if (window.ActiveXObject) {
        try {
            return new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
          try {
              return new ActiveXObject('Microsoft.XMLHTTP');
          } catch (e){
              alert('Catch new ActiveXObject(Microsoft)');
          }
        }
    }
    return null;
}
//
var get = null;
//
function myGetXml()
{
    get = createRequestObject();
   
    if(get){
        get.open('GET', 'http://www.cbr.ru/scripts/XML_daily.asp', true);
        get.onreadystatechange = loadValute;
        get.send(null);
    } else {
        alert('Error create object');
    }
}
function loadValute(){
    if (get.readyState == 4) {
        alert(get.status); // <<<<<<<<<<<<<<
        if (get.status == 200) {
            alert(get.responseText);
        } else {
            alert("Не удалось получить данные:\n" + get.statusText);
        }
    }

}

myGetXml();
вроде бы обычный код

на 4ом шаге - в get.status = 0, хотя фаербуг показывает 200 OK
в get.statusText = 'OK'; почему так? это типа запрещено с http://www.cbr.ru/scripts/XML_daily.asp брать курсы AJAXом?

ответ от сервера:
Date Tue, 11 Aug 2009 14:33:24 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
Content-Length 3136
Content-Type text/xml
Cache-Control private
 

AmdY

Пью пиво
Команда форума
ты пытаешься ajax-ом взять данные с другого домена?
 

Alexandre

PHPПенсионер
ты пытаешься ajax-ом взять данные с другого домена?
угу... нельзя.
бери курсы валютиз ЦБ раз в день по крону и храни у себя в какой-нибудь временной тбл,
а еще лучше в статичном файле и дергай их аяксом на здоровье со своего сайта.
 

iceman

говнокодер
да я понял уже, что я лохонулся +)))

не подскажите сайт с бесплатным доступом к котировкам акций и индексам бирж? )
 

DiMA

php.spb.ru
Команда форума
используй интерфейс SOAP для получения чистых данных в пхп
 

iceman

говнокодер
Alexandre
всмысле бесплатный доступ не через сайт, а типа дают доступ к xml или json с котировками... я там ищу уже какой день, не могу найти +(
 

Alexandre

PHPПенсионер
посмотри по HTML
там тянется какой-то статический файл
весь рунет тянет оттуда все котировки
 

iceman

говнокодер
нафол, кому пригодиться вот http://export.rbc.ru/expdocs/free.index.0.shtml

-~{}~ 12.08.09 19:07:

а вообще заказчик хочет в бегущей строке на сайте - курсы валют и индексы, ладно курсы валют один раз ведь обновлять можно, но индексы же изменяются весь день, т.е. ей нужна НЕ результаты окончания сессии, а текущие, но вроде даже на сайте ММВБ, РТС и РБК (показывает только результаты окончания сессии) такого нету о_О

я прав? послать заказчика? +)
 

phprus

Moderator
Команда форума
iceman
Текущие есть. Но я сомневаюсь, что кто-то их предоставляет бесплатно.
На сайте РТС есть графики и судя по тому, что там шкалы в часах наверняка там текущие индексы.

Update:
Если вдруг найдешь где-то источник бесплатной информации по данной теме поделись ссылкой пожалуйста.
 

iceman

говнокодер
пока тяну с ММВБ json фаил

http://www.micex.ru/issrpc/marketdata/stock/shares/daily/prefered/result.json?list=%272743%27%2C%273868%27%2C%272783%27%2C%272744%27%2C%272848%27%2C%272849%27%2C%273767%27%2C%276017%27&board_list=%275%27%2C%274%27%2C%271%27&market=shares&limit=10&start=0&lang=ru

меняем list и получаем нужные данные... но данные обновляются только несколько раз в день...

доступ к xml у них платный
 

sanmai

Новичок
Можно так:

HTML:
<div id="USD">Доллар США $ — 00,0000 руб.</div>
<div id="EUR">Евро € — 00,0000 руб.</div>

<script>
function CBR_XML_Daily_Ru(rates) {
    function trend(current, previous) {
        if (current > previous) return ' ▲';
        if (current < previous) return ' ▼';
        return '';
    }
    
    var USDrate = rates.Valute.USD.Value.toFixed(4).replace('.', ',');
    var USD = document.getElementById('USD');
    USD.innerHTML = USD.innerHTML.replace('00,0000', USDrate);
    USD.innerHTML += trend(rates.Valute.USD.Value, rates.Valute.USD.Previous);

    var EURrate = rates.Valute.EUR.Value.toFixed(4).replace('.', ',');
    var EUR = document.getElementById('EUR');
    EUR.innerHTML = EUR.innerHTML.replace('00,0000', EURrate);
    EUR.innerHTML += trend(rates.Valute.EUR.Value, rates.Valute.EUR.Previous);
}
</script>
<script src="//www.cbr-xml-daily.ru/daily_jsonp.js"></script>
 

sanmai

Новичок
Ох что-то у вас фантазия разыгралась. Какая реклама, вы о чём?

С чарсетами и прочим вы на сам сайт обращайтесь, я вам не помогу.
 
Последнее редактирование:
Сверху