从JavaScript更新的html读取数据

从JavaScript更新的html读取数据,javascript,actionscript-3,data-structures,finance,Javascript,Actionscript 3,Data Structures,Finance,是否可以通过actionscript3读取实时更新的报价,而不必一直重新加载页面,这将是一个网络负担 换句话说,是否可以将报价数据直接流式传输到actionscript3,或者最终从javascript传输到PHP 如果没有,是否有人对如何将这些引语输入actionscript有任何建议?可能会创建一个服务器端脚本,每隔5秒左右检查一次站点内容。 脚本可以解析出您希望检索的“引号”的“缓存”版本。然后通过URLRequests在短时间内从flash应用程序中请求缓存的内容。继续Theo所说的。。

是否可以通过actionscript3读取实时更新的报价,而不必一直重新加载页面,这将是一个网络负担

换句话说,是否可以将报价数据直接流式传输到actionscript3,或者最终从javascript传输到PHP


如果没有,是否有人对如何将这些引语输入actionscript有任何建议?

可能会创建一个服务器端脚本,每隔5秒左右检查一次站点内容。
脚本可以解析出您希望检索的“引号”的“缓存”版本。然后通过URLRequests在短时间内从flash应用程序中请求缓存的内容。

继续Theo所说的。。。 (我相信有一种更巧妙的方法可以做到这一点,我会被指责为黑客,但它真的很管用)

我基本上只是提取欧元/美元下红色的前两个数字

下面是要放在名为getContent.php的服务器上的php脚本

<?php

$handle = fopen("getVars.php", "r");

$contents = '';
    while (!feof($handle)) {
     $contents .= fread($handle, 8192);
}

$vars = explode("&",  $contents);
$time = substr($vars[2], 5);
$difference = abs(date(s)-$time);

if($difference>5)
{

    $handle = fopen("http://www.fxstreet.com/technical/currencies-glance/pair.aspx?id=EUR/USD", "r");

    $contents = '';
        while (!feof($handle)) {
         $contents .= fread($handle, 8192);
    }

    $contents=trim($contents);
    $pos1 = strpos($contents, 'lhtml_0" innerOnUpdate="att=BID" innerfilter="format_number">');
    $str1 = substr($contents, $pos1, 100);
    $cur1 =  substr($str1, 61, 6); 
    $pos2 = strpos($contents, 'lhtml_1" innerOnUpdate="att=ASK" innerfilter="format_number">');
    $str2 = substr($contents, $pos2, 100);
    $cur2 = substr($str2, 61, 6); 

    $cachedPage = fopen("getVars.php", "w");
    $varString = "cur1=$cur1&cur2=$cur2&time=".date(s);
    fwrite($cachedPage,$varString);
    fclose($cachedPage);
    echo "cur1=$cur1&cur2=$cur2&cached=false";
}
else
{
    $handle = fopen("getVars.php", "r");

    $contents = '';
        while (!feof($handle)) {
         $contents .= fread($handle, 8192);
    }

    echo $contents."&cached=true";
}

fclose($handle);
?>
你可以在这里看到它的作用

黑客部分是我用php解析页面。我不得不做一些严肃的子串动作。我相信任何一个具有相当数量解析能力的人都可以编写一个更干净的代码来提取您需要的所有数据


我只是想试试看。祝你好运:)

这很酷,但我仍然认为不在每个请求上重新分析它是个好主意(除非你用服务器缓存处理这个问题)。想象一个数字:200个用户连接60秒,这使得2400个请求(不可避免)+2400个fopen/解析(这很痛苦)。您可以通过缓存结果(如果使用“lazy”方法,甚至更少)将最后一个数字设为12!我刚刚更新了php,如果两次访问之间的时间超过5秒,则仅重新加载并重新分析包含内容的URL。
var updateTimer:Timer = new Timer(5000);
updateTimer.addEventListener(TimerEvent.TIMER, getQuotes);
updateTimer.start();
function getQuotes(e:Event):void
{
    var request:URLRequest = new URLRequest ("getContent.php");     
    var loader:URLLoader = new URLLoader (request);
    loader.addEventListener(Event.COMPLETE, onComplete);
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load(request);
}

function onComplete (event:Event):void
{
   var variables:URLVariables = new URLVariables( event.target.data );
   currency1.text = variables.cur1;
   currency2.text = variables.cur2;
}
var e:Event;
getQuotes(e);