新版如何落伍 | 站长知道 | 落伍预告页 | 站长运营 | 站长赚钱 | 站长代码 | 站长任务 | 站长招聘 | 落伍T恤 | 积分说明 | 帐号保护和激活
91ivr火爆点歌联盟 效果最强体育产品注册, 每个2元。提升流量, 赚钱, 上开心搜揽众浙江电信15M,广东电信10M,549起
黑马联盟2008年新品新举措!中客: 空间产品随时可无条件退款!0168.com 24小时现机租用百独托管1000起,电信租用499
乐乐联盟—最好的图铃联盟英拓酷睿机器+1元,升级为2G内存九天智能建网站 2008投资好项目盟者Q币 独家奥运抢票 比点歌更强
DNSPod智能DNS,我们一直在免费莆阳:E4500/2G年付6999元送产权雅唐网络酷睿服务器499元/月256M内存VPS主机138/月
发新话题
打印

[编程] Ajax专题...

俺写的一个ajax的类
复制内容到剪贴板
代码:
<!--
//xmlhttp和xmldom对象
DedeXHTTP = null;
DedeXDOM = null;
DedeContainer = null;

//获取指定ID的元素
function $(eid){
        return document.getElementById(eid);
}

//参数 gcontainer 是保存下载完成的内容的容器

function DedeAjax(gcontainer){

DedeContainer = gcontainer;

//post或get发送数据的键值对
this.keys = Array();
this.values = Array();
this.keyCount = -1;

//http请求头
this.rkeys = Array();
this.rvalues = Array();
this.rkeyCount = -1;
//请求头类型
this.rtype = 'text';

//初始化xmlhttp
if(window.XMLHttpRequest){//IE7, Mozilla ,Firefox 等浏览器内置该对象
     DedeXHTTP = new XMLHttpRequest();
}else if(window.ActiveXObject){//IE6、IE5
     try { DedeXHTTP = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) { }
     if (DedeXHTTP == null) try { DedeXHTTP = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { }
}

DedeXHTTP.onreadystatechange = function(){
        if(DedeXHTTP.readyState == 4){
    if(DedeXHTTP.status == 200){
       DedeContainer.innerHTML = DedeXHTTP.responseText;
       DedeXHTTP = null;
    }
    else DedeContainer.innerHTML = "下载数据失败";
  }
  else DedeContainer.innerHTML = "正在下载数据...";
};

//增加一个POST或GET键值对
this.AddKey = function(skey,svalue){
        this.keyCount++;
        this.keys[this.keyCount] = skey;
        this.values[this.keyCount] = escape(svalue);
};

//增加一个Http请求头键值对
this.AddHead = function(skey,svalue){
        this.rkeyCount++;
        this.rkeys[this.rkeyCount] = skey;
        this.rvalues[this.rkeyCount] = svalue;
};

//清除当前对象的哈希表参数
this.ClearSet = function(){
        this.keyCount = -1;
        this.keys = Array();
        this.values = Array();
        this.rkeyCount = -1;
        this.rkeys = Array();
        this.rvalues = Array();
};

//发送http请求头
this.SendHead = function(){
        if(this.rkeyCount!=-1){ //发送用户自行设定的请求头
          for(;i<=this.rkeyCount;i++){
                  DedeXHTTP.setRequestHeader(this.rkeys[i],this.rvalues[i]);
          }
  }
 if(this.rtype=='binary'){
          DedeXHTTP.setRequestHeader("Content-Type","multipart/form-data");
  }else{
          DedeXHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  }
};

//用Post方式发送数据
this.SendPost = function(purl){
        var pdata = "";
        var i=0;
        this.state = 0;
        DedeXHTTP.open("POST", purl, true);
        this.SendHead();
  if(this.keyCount!=-1){ //post数据
          for(;i<=this.keyCount;i++){
                  if(pdata=="") pdata = this.keys[i]+'='+this.values[i];
                  else pdata += "&"+this.keys[i]+'='+this.values[i];
          }
  }
  DedeXHTTP.send(pdata);
};

//用GET方式发送数据
this.SendGet = function(purl){
        var gkey = "";
        var i=0;
        this.state = 0;
        if(this.keyCount!=-1){ //get参数
          for(;i<=this.keyCount;i++){
                  if(gkey=="") gkey = this.keys[i]+'='+this.values[i];
                  else gkey += "&"+this.keys[i]+'='+this.values[i];
          }
          if(purl.indexOf('?')==-1) purl = purl + '?' + gkey;
          else  purl = purl + '&' + gkey;
  }
        DedeXHTTP.open("GET", purl, true);
        this.SendHead();
  DedeXHTTP.send(null);
};

} // End Class DedeAjax

//初始化xmldom
function InitXDom(){
  if(DedeXDOM!=null) return;
  var obj = null;
  if (typeof(DOMParser) != "undefined") { // Gecko、Mozilla、Firefox
    var parser = new DOMParser();
    obj = parser.parseFromString(xmlText, "text/xml");
  } else { // IE
    try { obj = new ActiveXObject("MSXML2.DOMDocument");} catch (e) { }
    if (obj == null) try { obj = new ActiveXObject("Microsoft.XMLDOM"); } catch (e) { }
  }
  DedeXDOM = obj;
};
-->
使用方法

//toemID 接收数据的元素ID,surl是请求页
//如果要用post,则myajax.SendPost(surl);
//用 myajax.AddKey(skey,svalue) 设定 get 或 post 的请求值
//   myajax.AddHead(skey,svalue) 设设定http请求头
function YourAction(toemID,surl)
{
     if($(toemID).innerHTML == ''){
       var myajax = new DedeAjax($(toemID));
       myajax.SendGet(surl);
    }
}

如果要用dom的,就比较麻烦些,不建直接用xhttp来获得dom,而是通过返回的内容再载入到dom中
虽然不英俊,但我很人...
Prototype Dojo之类的框架也是必要的 文档说明也有中文的,但是其他的框架如Rico Backbase...还没有中文文档,有兴趣搞几个中国的官方也不错~~

TOP

收到,谢谢

TOP

不错,收藏

TOP

SAJAX0.12中去掉了asp版本,需要asp版本的可以下载0.11

http://www.modernmethod.com/sajax/sajax-0.11.zip

TOP

引用:
原帖由 折翼飞翔 于 2006-6-18 06:47 发表
SAJAX0.12中去掉了asp版本,需要asp版本的可以下载0.11

http://www.modernmethod.com/sajax/sajax-0.11.zip
asp版本因为bug暂时去掉,不推荐现在用,可以等新版本发布后再用。。。
引用:
ASP support has been temporarily removed due to bugs. It will be back soon.

- tlack
www.weaverdream.com
开源CMS开发中...
批发带宽: 江苏常州电信10M独=4000 电信+网通10M独=6500 | 电信100M独=1.6万 租带宽,找残风QQ:940641

TOP

引用:
原帖由 qilin088 于 2006-6-16 19:34 发表
斑竹控制下吧

禁止灌水啊....

删吧
有同感

TOP

支持!

PHP+Mysql蝈蝈自动采集系统=挣钱建站利器

TOP

先留个位置!马上回来!放代码!
落伍定制zendframework程序开发,定制java爬虫开发框架......................
FMS程序想做就做!如果有需要请联系我。

TOP

好东西!

提示: 作者被禁止或删除 内容自动屏蔽
我的博客 ,
经验,技术
空间,域名服务,qq: 345268267。

TOP

发新话题