使用服务器端xhr和客户端xhr获取alexa,google的api获取alexa排名和google pr

更新获取google pr的源代码
C# 获取google pr,使用了最新算法,而非接口

  前些天在网上找到了一些获取alexa和google pr的api,现在结合实际使用asp和asp.net实现自己的google pr和alexa排名查询。要想查询看更多如何获取alexa的api,请阅读下面两篇文章

[转]如何获取Alexa排名数据
[转]在页面上实现Google PR值的显示


示例代码点击此处下载

首先介绍自己写的ajax类库ajax.js,这个是ajax查询的基础,代码如下
+展开
-JavaScript
String.prototype.trim=function(){return this.replace(/$\s*|\s*$/g,'');}
var Showbo={author:'showbo'};
//获取json对象
Showbo.getJson=function(v){if(typeof(v)=='string')return eval('('+v+')');else return v;}
//根据id获取对象
Showbo.$=function(Id){if('object'==typeof(Id))return Id;else if('string'==typeof(Id))return document.getElementById(Id);else return null;}
Showbo.IsIE=!!document.all;
//扩展IE下的XMLHttpRequest
if(Showbo.IsIE)window.XMLHttpRequest=function(){
  var acX=['msxml2.xmlhttp.5.0','msxml2.xmlhttp.4.0','msxml2.xmlhttp.3.0','msxml2.xmlhttp','microsoft.xmlhttp'],Xhr;
  for(var i=0;itry{Xhr=new ActiveXObject(acX[i]);return Xhr;}catch(e){}
  return false;
}
//ajax应用池
Showbo.Ajax={
  pools:[]//存储ajax对象的数组
  ,getObject:function(){//从数组中获取ajax对象,如果未返回则新建一个ajax对象
    for(var i=0;i<this.pools.length;i++)
      if(this.pools[i].readyState==0||this.pools[i].readyState==4)return this.pools[i];
      this.pools[this.pools.length]=new XMLHttpRequest();
      return this.pools[this.pools.length-1];
  }
  ,send:function(cfg){/*cfg示例  
    {
     url:'请求的页面'
    ,params:'键值对,注意不是json对象'
    ,method:'post/get,如果为指定则默认为get'
    ,success:成功时的回调函数
    ,failure:失败时的回调函数
    ,otherParams:提供给回调函数的其他参数,可以为json对象
    }
    
    成功或者失败的回调函数参数为  (当前的xhr对象,配置文件的中的otherParams)
    */

    if(!cfg||!cfg.url)throw("未设置配置文件!");
    var method=cfg.method,asy="boolean"==typeof(cfg.asy)?cfg.asy:true;
    if(!method||method!="post")method="get";
    if(method.toLocaleLowerCase()=='get'){
      var _dc=new Date().getTime();//加时间戳防止ie浏览器下的缓存
      cfg.params=cfg.params?cfg.params+'&_dc='+_dc:'_dc='+_dc;
      if(cfg.url.indexOf("?")!=-1)cfg.url+="&"+cfg.params;
      else cfg.url+="?"+cfg.params;cfg.params=null;
    }
    else if(!cfg.params)cfg.params='';
    var o=this.getObject();
    if(!o)throw("未能创建ajax对象!");
    o.open(method,cfg.url,asy);
    if(method.toLocaleLowerCase()=='post')o.setRequestHeader("content-type","application/x-www-form-urlencoded");
    o.send(cfg.params);
    o.onreadystatechange=function(){
      if(o.readyState==4){
        if(o.status==200||o.status==0){
          if("function"==typeof(cfg.success))cfg.success(o,cfg.otherParams);
        }
        else if("function"==typeof(cfg.failure))cfg.failure(o,cfg.otherParams);
      }
    }
  }
}



下面是测试页面index.html
+展开
-HTML
<!!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>简易alexa排名,google pr查询</title>
    <meta name="Keywords" runat="server" id="metaKey" content="ajax查询,alexa排名,google page rank 查询"/>
    <meta name="Description" runat="server" id="metaDes" content="ajax查询,alexa排名,google page rank 查询"/>
    <script type="text/javascript" src="ajax.js"></script> 
    <style type="text/css">
    body{font-size:12px;}
    div{line-height:20px;margin-top:10px;}
    div span{float:left;}
    div span.prm{width:40px;height:5px;border:solid 1px #000000;line-height:5px;overflow:hidden;margin-top:7px;}
    div span.prm span{background:#5eaa5e;}
    
</style> 
</head>
<body>
<h1>简易alexa排名,google pr查询</h1>
请输入要查询的域名:<input type="text" style="width:300px"