Ajax首接触

本文介绍了一种不依赖第三方库实现Ajax的方法,通过原生JavaScript创建XMLHttpRequest对象,并提供POST和GET两种请求方式。文章详细展示了如何自定义发送请求、接收响应以及处理数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很早以前,我在自己做项目的时候就使用过Ajax技术,但是当时对于其机制就是搞部清楚,所以也都是复用人家写的东西。所以当时也只是知道了Ajax这个东西,和Ajax可以给我的Web编程带来的好处罢了。今天,我在新的公司,由于需求的要求,必须使用Ajax,经过几天的实践,终于对Ajax又有了新的了解。虽然现在有很多人都使用prototype,里面也很好的封装了Ajax,但是对于部分项目而言(特别是那种很早以前就开始了,但是确永远做不完的项目,比如公司自产自用的ERP),没有必要每次去加载这么一个35KB左右的文件(毕竟效率上会受影响)。所以公司决定自己写。代码如下:

定义

varXMLHttpReq=false;

/**//*-------------------------------------Ajax基础函数-------------------------------------*/
//建立XMLHttpRequest对象
functionCreateXMLHttpRequest()
...{
if(window.XMLHttpRequest)
...{
//IsMozillaBrowse
XMLHttpReq=newXMLHttpRequest();
}

elseif(window.ActiveXObject)
...{
//IEBrowse
try
...{

XMLHttpReq
=newActiveXObject("Msxml2.XMLHTTP");
}

catch(e)
...{
try
...{

XMLHttpReq
=newActiveXObject("Microsoft.XMLHTTP");
}

catch(e)...{}
}

}

}


//Sendrequest'function.(POST)
//
Url:sendurladdress.
//
IsWait:Iswaittingorreturnnow.
//
ResponseFunction:processresponse'sfunction.
//
XmlObj:sendxmldataobject.
functionSendRequestPost(Url,IsWait,ResponseFunction,XmlObj)
...{
CreateXMLHttpRequest();
XMLHttpReq.open(
"POST",Url,IsWait);
XMLHttpReq.onreadystatechange
=ResponseFunction;//defineresponse'sfunction
XMLHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLHttpReq.send(XmlObj);
//SendRequest
}


//Sendrequest'function.(GET)
//
Url:sendurladdress.
//
IsWait:Iswaittingorreturnnow.
//
ResponseFunction:processresponse'sfunction.
//
ArgString:sendurl'sargumentstring.
functionSendRequestGet(Url,IsWait,ResponseFunction,ArgString)
...{
CreateXMLHttpRequest();
XMLHttpReq.onreadystatechange
=ResponseFunction;//defineresponse'sfunction
if(ArgString==null)
...{
XMLHttpReq.open(
"GET",Url,IsWait);
}

else
...{
XMLHttpReq.open(
"GET",Url+"?"+ArgString,IsWait);
}

XMLHttpReq.send(
null);
}


//Invokefunction.
//
SendType:sendtype.(GETorPOST)
//
UrlPath:sendurladdress.
//
IsWait:Iswaittingorreturnnow.(trueorfalse)
//
DataType:sendargument'sdatatype.(DataMailorDataWork)
//
ResponseFunction:processresponse'sfunction.
functionRunSend(SendType,UrlPath,IsWait,DataType,ResponseFunction)
...{
varurl=unescape(UrlPath.replace(/+/g,""));
vardataobj=CreateData(DataType);
if(SendType=="POST")
...{
SendRequestPost(url,IsWait,ResponseFunction,dataobj);
}

elseif(SendType=="GET")
...{
SendRequestGet(url,IsWait,ResponseFunction,dataobj);
}

}

以后每次调用RunSend函数,SendType传入“POST”或者“GET”,UrlPath为Ajax获取页面地址,IsWait为是否等待请求,DataType为处理数据类型,ResponseFunction为响应函数。

//Creatdataobject.
functionCreateData(DataClassType)
...{
vardataObj
="";
switch(DataClassType)
...{
case"MailPage":
dataObj
=CreateMailPage();
break;
}

returndataObj;
}

functionf()
...{
if(XMLHttpReq.readyState==4)
...{
//judgementobjectstate
if(XMLHttpReq.status==200)
...{
alert(
"Ajax");
}

}

}

functionCreateMailPage()
...{
vardataObj="DataType=MailPage&page=1“;
returndataObj;
}

然后调用

RunSend( "GET",url,true,"MailPage",f );

就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值