使用EXT实现无刷新动态调用股票信息

先看一下我以前写的文章:

http://blog.csdn.net/kunshan_shenbin/archive/2007/12/06/1921230.aspx

http://blog.csdn.net/kunshan_shenbin/archive/2007/12/11/1929767.aspx

http://blog.csdn.net/kunshan_shenbin/archive/2007/12/18/1946843.aspx

最近开始对ExtJS感兴趣了,今天正好有空,花了点时间,写了个基于Ext的例子。

说句老实话,我目前还对Ext技术不是很熟,所以写的代码自己也觉得怪怪的,有什么不对的地方,还望赐教。

使用的Ext版本是ext-2.2,下载地址为:http://www.extjs.com/products/extjs/download.php

下载Ext JS 2.2 SDK,解压后拷贝resources文件夹至工作目录。

在resources文件夹下新建jscript文件夹,并拷贝ext根目录下ext-all.js文件及adapter/ext/ext-base.js文件至jscript文件夹下,并新建stock.js文件,代码如下:

  1. function ajaxRequest(flag){
  2.     
  3.     Ext.Ajax.request({
  4.        url: 'http://hq.sinajs.cn/list=sh000001,sz399001,sh601939,sh600016,sh600528,sh600667,sh601390,sh601186,sh601866,sh600075,sh600133,sz000807,sz000544,',
  5.        success: function(response){
  6.             var stocks = response.responseText.split(';');
  7.             var length = stocks.length - 2;
  8.             var dataset = new Array(length);
  9.             for(var i=0; i<length; i++){                    
  10.                 var content = stocks[i];
  11.                 var temp1 = content.split('=')[0];
  12.                 var temp2 = content.split('=')[1];
  13.                 var code = temp1.substr(temp1.length - 6, 6);
  14.                 var temp3 = temp2.replace('"''');
  15.                 var name = temp3.split(',')[0];
  16.                 var tday_f = temp3.split(',')[1];
  17.                 var yest_f = temp3.split(',')[2];
  18.                 var curr_f = temp3.split(',')[3];
  19.                 var temp_f = curr_f - yest_f;
  20.                 
  21.                 var data_i = new Array(9);
  22.                 data_i[0] = code;
  23.                 data_i[1] = name;
  24.                 data_i[2] = curr_f;
  25.                 data_i[3] = tday_f;
  26.                 data_i[4] = yest_f;
  27.                 data_i[5] = temp_f.toFixed(2);
  28.                 data_i[6] = ((temp_f / yest_f) * 100).toFixed(2);
  29.                 data_i[7] = temp3.split(',')[4];
  30.                 data_i[8] = temp3.split(',')[5];
  31.                 dataset[i] = data_i;
  32.             }
  33.             
  34.             var store = new Ext.data.SimpleStore({
  35.                 fields: [
  36.                    {name: 'a1'},
  37.                    {name: 'a2'},
  38.                    {name: 'a3'},
  39.                    {name: 'a4'},
  40.                    {name: 'a5'},
  41.                    {name: 'a6'},
  42.                    {name: 'a7'},
  43.                    {name: 'a8'},
  44.                    {name: 'a9'}
  45.                 ]
  46.             }); 
  47.             //store.loadData(dataset);
  48.             var grid = new Ext.grid.GridPanel({
  49.                 //renderTo: document.body,
  50.                 store: store,
  51.                 columns: [
  52.                     {header: "股票代号", width: 100, sortable: true, dataIndex: 'a1', id:'a1'},
  53.                     {header: "股票名称", width: 80, sortable: true, dataIndex: 'a2'},
  54.                     {header: "当前价格", width: 80, sortable: true, dataIndex: 'a3'},
  55.                     {header: "今日开盘", width: 80, sortable: true, dataIndex: 'a4'},
  56.                     {header: "昨日收盘", width: 80, sortable: true, dataIndex: 'a5'},
  57.                     {header: "当前差价", width: 80, sortable: true, dataIndex: 'a6', renderer: change},
  58.                     {header: "涨跌幅度", width: 80, sortable: true, dataIndex: 'a7', renderer: change},
  59.                     {header: "最高价格", width: 80, sortable: true, dataIndex: 'a8'},
  60.                     {header: "最低价格", width: 80, sortable: true, dataIndex: 'a9'}
  61.                 ],
  62.                 stripeRows: true,
  63.                 autoExpandColumn: 'a1',
  64.                 height:325,
  65.                 width:740,
  66.                 title:'股票信息一览'
  67.             });
  68.             
  69.             //Ext.get("stockgrid").dom.innerText = "";
  70.             Ext.getDom("stockgrid").innerText = "";
  71.             
  72.             grid.render('stockgrid');
  73.             grid.getSelectionModel().selectFirstRow();
  74.             grid.store.loadData(dataset);
  75.        }
  76.     });
  77. }
  78. function change(val){
  79.     if(val < 0){
  80.         return '<span style="color:green;">' + val + '</span>';
  81.     }else if(val > 0){
  82.         return '<span style="color:red;">' + val + '</span>';
  83.     }
  84.     return val;
  85. }
  86. Ext.onReady(function(){
  87.     
  88.     //修正页面启动时提示下载http://extjs.com/s.gif的问题
  89.     Ext.BLANK_IMAGE_URL = "resources/images/default/s.gif";
  90.     
  91.     Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
  92.     ajaxRequest(true);
  93.     window.setInterval("ajaxRequest(false)",3000); 
  94. });

在工作目录下新建stock.html文件,代码如下:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gbk">
  4. <title>股票信息</title>
  5.     <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
  6.     <script type="text/javascript" src="resources/jscript/ext-base.js"></script>
  7.     <script type="text/javascript" src="resources/jscript/ext-all.js"></script>
  8.     <script type="text/javascript" src="resources/jscript/stock.js"></script>
  9. </head>
  10. <body>
  11. <div id="stockgrid"></div>
  12. </body>
  13. </html>

从这里可以看到,使用Ext技术,动态页面从页面表现层到数据取得全部都交由Ext来处理。

 

其他参考资料:

http://www.extjs.com/deploy/dev/docs/

http://blog.csdn.net/yanji94521/archive/2008/03/22/2205563.aspx

http://www.extshow.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值