网络编程
位置:首页>> 网络编程>> JavaScript>> 详解AJAX核心 —— XMLHttpRequest 对象(3)

详解AJAX核心 —— XMLHttpRequest 对象(3)

  发布时间:2010-03-31 14:49:00 

标签:ajax,XMLHttpRequest,浏览器

好了,看看完成的代码吧。

完成的代码


var xmlhttp = false; //创建一个新变量 request 并赋值 false。使用 false 作为判断条件,它表示还没有创建 XMLHttpRequest 对象。 
function CreateXMLHttp(){
  try{
  xmlhttp = new XMLHttpRequest();  //尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。
  }
  catch (e){
  try{
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  //使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)
  }
  catch (e){
    try{
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。
    }
    catch (failed){
      xmlhttp = false;  //如果失败则保证 request 的值仍然为 false。
    }
  }
  }
  return xmlhttp;
}
xmlhttp = CreateXMLHttp();
xmlhttp.open("get","http://www.cnblogs.com",true);
xmlhttp.onReadyStateChange = getResult;
xmlhttp.send();
function getResult(){
  if(xmlhttp.readyState == 4){
  alert(xmlhttp.responseText);
  }
}

看似一切都OK了,可是有没有想过,如果HTML代码在网络传输过程中出错了,或者我们指定的地址失效会怎么样呢。这个时候就需要用到status属性,即由服务器返回的 HTTP 状态代码。 xmlhttp.status 等于200时表示传输过程完整没有错误。具体的HTTP状态代码什么意思可以到W3C组织网站上看看,地址http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1

把getResult()方法写成下面这样我觉的就真的OK了。

function getResult(){
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
  alert(xmlhttp.responseText);
  }
}

好了,一个本来挺简单的东西,被我写的这么多,好象很罗嗦。不过我觉的编程对基础内容的理解很重要,现在很多时候开发AJAX的程序都使用很多JS的库,不需要直接编写这么基础的代码。如使用著名的jQuery,但是如果我们对基础的东西有很好的理解,那这些库报告错误,或者出现问题我们可以很好很快的知道错在哪里,更快的做出改变使程序正常运行。(文/依依老猫

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com