使用jquery实时获取新浪期货数据

今天老板叫我做了一个事情,就是从新浪的股票模块上实时获取某一支期货的数据并且显示出来。

上网找了这方面的资料,发现新浪的股票有提供接口,只要引用这个接口就能获取当前该期货的数据。于是照做。

以新浪期货的行情中心--能源期货为例。地址为:http://vip.stock.finance.sina.com.cn/mkt/#qqny_qh

这里显示了三种石油的行情,石油行情会实时的跳动。我要做的是把某一种石油的数据摘取过来并显示在我自己的页面上。刚开始我是这样做的。

1.找到这支股票的代号,如NYMEX原油的代号是CL,然后它的接口就是:http://hq.sinajs.cn/list=hf_CL 只要你访问这个地址,就会发现一串字符串,该字符串代表了你访问的时候,这支股票的实时数据。如:

var hq_str_hf_CL="82.90,0.1813,82.89,82.90,83.48,82.67,19:20:37,82.75,83.09,804,0,0,2014-10-20,NYMEX原油";
这串数据包含了期货的最新价格,昨收,今开,最高价,最低价等信息。

新建一个html文件,引用jquery.min.js,然后再添加上面的链接既可以引用这个js文件,从而获取里面的hq_str_hf_CL字符串。

具体操作如下:var elements=hq_str_hf_CL.split(",");这条代码可以将这个字符串拆分成一个数组,这样我们需要数组里面的数据,就可以对其进行操作了。

比如:我需要将一个数据显示到某个html元素中,就可以$("#divtest").text(elements[3]);将数组中的第四个元素放到id为divtest的html元素中。

但是问题来了,这串字符串是应该是实时改变的,但是我只有在刷新页面的时候,才能去更新它里面的数据。而我想要做到的是,程序自己实时获取数据并实时的显示在页面上。

后来我就把获取和显示的代码写成一个方法refresh_fuc,然后通过setInterval(refresh_fuc, 1000); 希望能1秒钟刷新一次数据,可是没有用。百思不得其解。

后来请教同事,终于找到原因,那是因为我把引用js的代码写在里面,也就是相当于只在页面加载的时候获取了那个字符串hq_str_hf_CL,所以即便我反复执行获取字符串的操作,我获取的字符串还是加载的时候的那个字符串。怪不得数据一直不变。

2.后面经同事建议,我才用了ajax向源页面发送请求的方式来获取字符串,把ajax代码写在refresh_fuc里面,还是用setinterval()方法每隔一秒钟调用一次,这次才实现了实时刷新。这是因为我每次发送请求得到的都是发送请求时候的字符串。具体代码如下:





 
美国原油接口数据







输入汇率   成交价
名称 涨跌额 最新价 昨收 今开 最高 最低 买入 卖出 买量 卖量 持仓量 浮动盈亏 日期 时间
有兴趣的朋友可以去试试。

你可能感兴趣的:(jquery)