网页设计与开发第18章Ajax技术的使用.ppt

为了提高程序的兼容性,可以创建一个跨浏览器的XMLHttpRequest对象。创建一个跨浏览器的XMLHttpRequest对象其实很简单,只需要判断一下不同浏览器的实现方式,如果浏览器提供了XMLHttpRequest类,则直接创建一个该类的实例,否则实例化一个ActiveX对象。具体代码如下: if (window.XMLHttpRequest) { //非IE浏览器 http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE浏览器 try { http_request = new ActiveXObject(Msxml2.XMLHTTP); } catch (e) { try { http_request = new ActiveXObject(Microsoft.XMLHTTP); } catch (e) {} } } 在上面的代码中,调用window.ActiveXObject将返回一个对象,或是null,在if语句中,会把返回值看作是true或false(如果返回的是一个对象,则为true,否则返回null,则为false)。 说明: 由于JavaScript具有动态类型特性,而且XMLHttpRequest对象在不同浏览器上的实例是兼容的,所以可以用同样的方式访问XMLHttpRequest实例的属性的方法,不需要考虑创建该实例的方法是什么。 XMLHttpRequest对象提供了一些常用属性,通过这些属性可以获取服务器的响应状态及响应内容等,下面将对XMLHttpRequest对象的常用属性进行介绍。 1.指定状态改变时所触发的事件处理器的属性 XMLHttpRequest对象提供了用于指定状态改变时所触发的事件处理器的属性onreadystatechange。在Ajax中,每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数。 例如,通过下面的代码可以实现当指定状态改变时所要触发的JavaScript函数,这里为getResult()。 http_request.onreadystatechange = getResult; 注意: 在指定所触发的事件处理器时,所调用的JavaScript函数不能添加小括号及指定参数名。不过这里可以使用匿名函数。例如,要调用带参数的函数getResult(),可以使用下面的代码: http_request.onreadystatechange = function(){ getResult(添加的参数); //调用带参数的函数 }; //通过匿名函数指定要带参数的函数 18.5.2 XMLHttpRequest对象的常用属性 2.获取请求状态的属性 XMLHttpRequest对象提供了用于获取请求状态的属性readyState,该属性共包括5个属性值,如表18-1所示。 表18-1 readyState属性的属性值 在实际应用中,该属性经常用于判断请求状态,当请求状态等于4,也就是为完成时,再判断请求是否成功,如果成功将开始处理返回结果。 值 意义 值 意义 0 未初始化 1 正在加载 2 已加载 3 交互中 4 完成 3.获取服务器的字符串响应的属性 XMLHttpRequest对象提供了用于获取服务器响应的属性responseText,表示为字符串。例如,获取服务器返回的字符串响应,并赋值给变量h可以使用下面的代码: var h=http_request. responseText; 在上面的代码中,http_request为XMLHttpRequest对象。 4.获取服务器的XML响应的属性 XMLHttpRequest对象提供了用于获取服务器响应的属性responseXML,表示为XML。这个对象可以解析为一个DOM对象。例如,获取服务器返回的XML响应,并赋值给变量xmldoc可以使用下面的代码: var xmldoc = http_request.responseXML; 在上面的代码中,http_request为XMLHttpRequest对象。 5.返回服务器的HTTP状态码的属性 XMLHttpRequest对象提供了用于返回服务器的HTTP状态码的属性status。该属性的语法格式如下: http_request.status http_request:XMLHttpRequest对象。 返回值:长整型的数值,代表服务器的HTTP状态码。常用的状态码如表18-

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档