详解AJAX核心 —— XMLHttpRequest 对象(3)
发布时间:2010-03-31 14:49:00
好了,看看完成的代码吧。
完成的代码
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,但是如果我们对基础的东西有很好的理解,那这些库报告错误,或者出现问题我们可以很好很快的知道错在哪里,更快的做出改变使程序正常运行。(文/依依老猫)


猜你喜欢
- 下载opencv2.4.9(python2.7匹配)后 (1)运行OpenCV 2.4.9.exe;(2)配置Python:将\opencv
- 出现的问题状况是:在Anaconda文件下,少了Jupyter Notebook快捷键,不然每次都要打开Anaconda Navigator
- 获取每一天的统计数据做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-0
- 本文实例为大家分享了python实现定时发送邮件的具体代码,供大家参考,具体内容如下一、发送邮件import smtplib from em
- 1、string-->numberstring类型 *1 即可变成 number类型2
- 前戏有时候生产环境是以项目来命名,有时候会出现更名情况,其实如何安全的更改数据库名,是个非常棘手的问题,特别是针对 MySQL 来数据库来说
- 最近决定把MT的后台数据从Berkeley的文件DB转到MySQL。原因之一是使用关系数据库可以获得更多的灵活性,比如运行一条sql来变更
- vue-router路由懒加载 和权限控制,今天刚好搞了一个基于node token验证的小demo所以下面介绍下,路由懒加载1、为什么要使
- 最近开始学习数据库知识,从mysql下手,下面详细介绍一下安装过程,给小伙伴们一个参考。一、安装 首先,从mysql的中文社区下载,我尝试过
- 言MySQL 8.0 从第一版release 到现在已经走过了4个年头了,8.0版本在功能和代码上做了相当大的改进和重构。和DBA圈子里的朋
- 前言本文主要给大家介绍了关于python用队列asyncio.Queue通讯的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详
- 首先我们创建数据库表:CREATE TABLE `t_demo` ( `id` int(32) NOT NULL, `name` varch
- 前言之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scr
- python开启debug模式的代码如下所示:import requests session = requests.session()imp
- 如下所示:# requests模块来请求页面# lxml模块的html构建selector选择器(格式化响应response)# from
- 本文实例讲述了Python结巴中文分词工具使用过程中遇到的问题及解决方法。分享给大家供大家参考,具体如下:结巴分词是Python语言中效果最
- 最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学
- 一个朋友需要,所以写了这两个,话不多说,看代码中国电信号段 133、149、153、173、177、180、181、189、199中国联通号
- golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析
- SQL,数据分析岗的必备技能,你可以不懂Python,R,不懂可视化,不懂机器学习。但SQL,你必须懂。要不然领导让你跑个数据来汇.....