【分享】一套我自己写的AJAX实现方案

NqIceCoffee 2008-10-22 11:28:14
var Ajax = {
GetXmlHttp : function () {
var xmlHttp = null;
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
} catch (ee) {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
}
}
return xmlHttp;
},

Process : function (ajaxInfo, processFun) {
var xmlObj = Ajax.GetXmlHttp();
if (!xmlObj) {
alert("抱歉,你的浏览器不支持AJAX。");
return;
}

var method = ajaxInfo.Method.toUpperCase();
var data = null;
xmlObj.open(method, ajaxInfo.Url, true);
if (method == "POST") {
data = ajaxInfo.Data;
xmlObj.setRequestHeader("Content-Length", data.Length());
xmlObj.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
}
xmlObj.send(data);

xmlObj.onreadystatechange = function () {
if (xmlObj.readyState == 4) {
if (xmlObj.status == 200) {
var type = ajaxInfo.Type.toUpperCase();
if (type == "TEXT") {
processFun(xmlObj.responseText);
} else if (type == "XML") {
processFun(xmlObj.responseXML);
} else {
alert("无法识别的返回方式");
}
xmlObj = null;
}
}
};
}
}


上面是我封装的AJAX对象

下面简单的说明一下调用示例:

1.新建一个data.ashx页面,代码如下:

public void ProcessRequest(HttpContext context)
{
HttpResponse response = context.Response;

response.Write("{ data:'testData', Url:'testUrl', User:{ Name:'IceCoffee', Age:26 } }");
response.End();
}


2.新建一个jason.aspx页面,部分JS代码如下:
<script language="javascript" type="text/javascript">
<!--
//var postData = "userName=abc&userPass=123";
//var request = { Method:"POST", Url:"data.ashx?rnd=" + Math.random(), Data:postData, Type:"TEXT" };//注释的部分是POST调用方式,下面是GET调用方式
var request = { Method:"GET", Url:"data.ashx?rnd=" + Math.random(), Data:null, Type:"TEXT" };
Ajax.Process(request, function (data) {
var jason = "var obj = " + data + ";";
eval(jason);
alert(obj.User.Name);
});
//-->
</script>


代码比较简单了,大虾们一看就懂,不足之处请大虾们指教(IE,FF下均能正常使用)
...全文
611 64 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
64 条回复
切换为时间正序
请发表友善的回复…
发表回复
masky5310 2010-05-24
  • 打赏
  • 举报
回复
Eagle_ice 2008-10-25
  • 打赏
  • 举报
回复
不错 顶...
wxdxy 2008-10-23
  • 打赏
  • 举报
回复
原理知道,实际这样使用没有,jquery这样封装,比较流行
babay2008 2008-10-23
  • 打赏
  • 举报
回复
呵呵
lfywy 2008-10-23
  • 打赏
  • 举报
回复
JF
mike1lainet 2008-10-23
  • 打赏
  • 举报
回复
学习
cwblaze 2008-10-23
  • 打赏
  • 举报
回复
JF
lfhlyx 2008-10-23
  • 打赏
  • 举报
回复
UP一下
NqIceCoffee 2008-10-23
  • 打赏
  • 举报
回复
回46楼的兄台

我在做.NET之前做过1年多的ASP,所以不喜欢使用服务器控件,更多的,我愿意自己去写代码实现。

这样自我感觉上代码会“干净”些,而且更容易控制这里面的流程。
a38809972 2008-10-23
  • 打赏
  • 举报
回复
我以前也这样用的,不过ajaxpro确实在后台好开发些,区别是ashx里面的没有编译,ajaxpro自动生成了ashx而已.
shenlong0125 2008-10-23
  • 打赏
  • 举报
回复
学习
编程有钱人了 2008-10-23
  • 打赏
  • 举报
回复
up
约修亚 2008-10-23
  • 打赏
  • 举报
回复
niu
NqIceCoffee 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 mengerhxy 的回复:]
LZ请问
Process : function (ajaxInfo, processFun) {
var xmlObj = Ajax.GetXmlHttp();
if (!xmlObj) {
alert("抱歉,你的浏览器不支持AJAX。");
return;
}

是什么语法?小女子没见过。
[/Quote]

json的语法

具体的你可以去网上搜搜
mengerhxy 2008-10-23
  • 打赏
  • 举报
回复
LZ请问
Process : function (ajaxInfo, processFun) {
var xmlObj = Ajax.GetXmlHttp();
if (!xmlObj) {
alert("抱歉,你的浏览器不支持AJAX。");
return;
}

是什么语法?小女子没见过。
mengerhxy 2008-10-23
  • 打赏
  • 举报
回复
LZ请问
Process : function (ajaxInfo, processFun) {
var xmlObj = Ajax.GetXmlHttp();
if (!xmlObj) {
alert("抱歉,你的浏览器不支持AJAX。");
return;
}

是什么语法?小女子没见过。
mengerhxy 2008-10-23
  • 打赏
  • 举报
回复
jf
yuhua3272004 2008-10-23
  • 打赏
  • 举报
回复
学习了
hao1hao2hao3 2008-10-23
  • 打赏
  • 举报
回复
Mark.
NqIceCoffee 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 57 楼 tantaiyizu 的回复:]
加油,虽然写的还比较幼稚。
[/Quote]

欢迎拍砖

但别人身攻击,谢谢。
加载更多回复(42)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧