本帖最后由 陈辉 于 2012-11-22 22:33 编辑
主要涉及ajax的异步请求xmlHttpResponse对象
具体的可以参考下面的代码来理解:
<script type="text/javascript">
//ajax
//根据不同的浏览器使用相应的方式来创建异步对象
function createXmlHttp() {
var xhobj = false;
try {
xhobj = new ActiveXObject("Msxml2.XMLHTTP"); //IE6.0+
} catch (e) {
try {
xhobj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e2) {
xhobj = false;
}
}
//谷歌,FireFox,Opera 8.0+,safari
if (!xhobj && typeof (XMLHttpRequest) != 'undefined') {
xhobj = new XMLHttpRequest();
}
return xhobj;
}
function getData() {
var xhr;
//1.创建异步对象
xhr = createXmlHttp();
//2.设置请求参数
xhr.open("get", "FirstAjaxForFun.ashx", true); //FirstAjaxForFun.ashx
//设置浏览器不使用缓存
xhr.setRequestHeader("If-Modified-Since", "0");
//3.设置回调函数,用来检查服务器是否将数据发送回给异步对象
//异步对象的readystate属性发生改变时,就会回调方法来检查当前状态,执行用户定义的代码
xhr.onreadystatechange = function () {
//alert(xhr.readystate);
//服务器已将数据发回到浏览器的异步对象
if (xhr.readystate == 4) {
//如果返回的响应报文状态吗为200,才代表服务器运行正确
if (xhr.status == 200) {
//获得服务器返回的数据
//document.getElementById("div1").innerHTML = xhr.responseText;
//将服务器端发回来的具有json格式的字符串转成json对象
//用eval将字符串转换成Json格式时,一定要在两遍加上括号
var json = eval("(" + xhr.responseText + ")");
alert(json.data);
}
else {
alert("系统繁忙,请联系管理员!");
}
}
}
//4.异步对象发送请求
xhr.send(null);
}
</script>
FirstAjaxForFun.ashx代码:
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "text/plain";
System.Threading.Thread.Sleep(2000);
//测试客户端if (xhr.status == 200)的时候用
//int a = 0;
//int c = 1 / a;
//context.Response.Write("<h1>" + "Hello World!" +
// DateTime.Now.ToLocalTime().ToString() + "</h1>");
if (!string.IsNullOrEmpty(context.Request.Form["txtName"]))
{
//{'data':'who are you post'} 是Json格式的字符串
context.Response.Write("{'data':'who are you post'}");
}
else
{
context.Response.Write("{'data':'No,I am get'}");
}
}
|