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

NqIceCoffee NqIceCoffee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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下均能正常使用)
...全文

相关推荐

评论 64
收藏 已收藏
分享
返回顶部
NqIceCoffee
.NET社区 62,273 成员 668,968 内容