2014-12-10 4 views
-1

Я хотел получить данные USDGBP в реальном времени от sinajs.cn.

Местоположение (третья строка кода) возвращает массив строк, называемый hq_str_GBPUSD. Теперь часть вычисления ниже может обновляться каждые 1 секунду, это не проблема. Но он только вычисляет уже полученную информацию. Информационная часть для извлечения (третья строка) не обновляется.

Как я могу исправить это и получить данные в режиме реального времени в USDGBP? Спасибо.Как я могу обновить часть веб-страницы и снова получить информацию?

<div id="scores"> 
<script type="text/javascript" src="http://w3school.com.cn/jquery/jquery-1.11.1.min.js"></script> 
<script type="text/javascript" src="http://hq.sinajs.cn/list=GBPUSD" charset = "gb2312"></script> 

<script type = "text/javascript"> 
var $scores = $("#scores"); 
var elements = hq_str_GBPUSD.split(","); 

setInterval(function() { 
    var $rateP = (elements[1]/elements[3]-1)*100; 
    var $rate = $rateP.toFixed(2); 
    $("#scores").text("USDGBP:"+elements[1]+"Change:"+$rate+"%"); 
    $scores.load("index.php #scores"); 
    }, 1000); 

</script> 
</div> 
+0

Что делает '$ scores.load (" index.php #scores ")' do? – putvande

+0

У вас есть тег; используйте ajax для получения данных, а не для элемента 'script'. –

+0

@MikeMcCaughan Ajax жалуется на CORS. – Shomz

ответ

1

Если там не лучше родной путь (см их API), вы всегда можете снова вставить весь сценарий, а затем снова извлечь модифицированную глобальную переменную hq_str_GBPUSD:

var scr = document.createElement('script'); 
scr.src = "http://hq.sinajs.cn/list=GBPUSD"; 
document.body.appendChild(scr); 

Давайте попробуем из сниппета с имитацией таймаута:

var res = document.getElementById('r'); 
 
var hq_str_GBPUSD = "not fetched yet"; 
 

 
setInterval(function() { 
 
    res.innerHTML = hq_str_GBPUSD; 
 
    }, 1000); 
 

 
setTimeout(function() { 
 
    var scr = document.createElement('script'); 
 
    scr.src = "http://hq.sinajs.cn/list=GBPUSD"; 
 
    document.body.appendChild(scr); 
 
    }, 3000);
<div id="r"></div>

Это работает!

+0

Если я просто поместил ваш блок кода в функцию setTimeOut в функцию setInterval, тогда он полностью решит мою проблему. Спасибо! –

+0

Добро пожаловать! Вы также можете захотеть очистить предыдущие теги скрипта от DOM при добавлении нового (просто чтобы сделать его более чистым). – Shomz