不同浏览器创建XMLHttpRequest方法有什么不同


Posted in 面试题 onNovember 17, 2014
XMLHttpRequest 类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。后来Mozilla﹑Netscape﹑Safari 和其他浏览器也提供了XMLHttpRequest类,不过它们创建XMLHttpRequest类的方法不同。
对于Internet Explorer浏览器:
xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP.3.0″); //3.0或4.0, 5.0
xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP”);
xmlhttp_request = new ActiveXObject(“Microsoft.XMLHTTP”);
由于在不同Internet Explorer浏览器中XMLHTTP版本可能不一致,为了更好的兼容不同版本的Internet Explorer浏览器,因此我们需要根据不同版本的Internet Explorer浏览器来创建XMLHttpRequest类,上面代码就是根据不同的Internet Explorer浏览器创建XMLHttpRequest类的方法。
对于Mozilla﹑Netscape﹑Safari等浏览器
创建XMLHttpRequest 方法如下:xmlhttp_request = new XMLHttpRequest();
如果服务器的响应没有XML mime-type header,某些Mozilla浏览器可能无法正常工作。 为了解决这个问题,如果服务器响应的header不是text/xml,可以调用其它方法修改该header。
xmlhttp_request = new XMLHttpRequest();
xmlhttp_request.overrideMimeType(‘text/xml’);
在实际应用中,为了兼容多种不同版本的浏览器,一般将创建XMLHttpRequest类的方法写成如下形式:
try{
if( window.ActiveXObject ){
for( var i = 5; i; i– ){
try{
if( i == 2 ){
xmlhttp_request = new ActiveXObject( “Microsoft.XMLHTTP” ); }
else{
xmlhttp_request = new ActiveXObject( “Msxml2.XMLHTTP.” + i + “.0″ );
xmlhttp_request.setRequestHeader(“Content-Type”,”text/xml”);
xmlhttp_request.setRequestHeader(“Charset”,”gb2312″); }
break;}
catch(e){
xmlhttp_request = false; } } }
else if( window.XMLHttpRequest )
{ xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType)
{ xmlhttp_request.overrideMimeType(‘text/xml’); } } }
catch(e){ xmlhttp_request = false; }
发送请求了
可以调用HTTP请求类的open()和send()方法,如下所示:
xmlhttp_request.open(‘GET’, URL, true);
xmlhttp_request.send(null);
open()的第一个参数是HTTP请求方式—GET,POST或任何服务器所支持的您想调用的方式。 按照HTTP规范,该参数要大写;否则,某些浏览器(如Firefox)可能无法处理请求。
第二个参数是请求页面的URL。
第三个参数设置请求是否为异步模式。如果是TRUE,JavaScript函数将继续执行,而不等待服务器响应。这就是”AJAX”中的”A”。
服务器的响应
这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应。可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名,如下所示:
xmlhttp_request.onreadystatechange =FunctionName;
FunctionName是用JavaScript创建的函数名,注意不要写成FunctionName(),当然我们也可以直接将JavaScript代码创建在onreadystatechange之后,例如:
xmlhttp_request.onreadystatechange = function(){
// JavaScript代码段
};
首先要检查请求的状态。只有当一个完整的服务器响应已经收到了,函数才可以处理该响应。XMLHttpRequest 提供了readyState属性来对服务器响应进行判断。
readyState的取值如下:
0 (未初始化)
1 (正在装载)
2 (装载完毕)
3 (交互中)
4 (完成)
所以只有当readyState=4时,一个完整的服务器响应已经收到了,函数才可以处理该响应。具体代码如下:
if (http_request.readyState == 4) { // 收到完整的服务器响应 }
else { // 没有收到完整的服务器响应 }
当readyState=4时,一个完整的服务器响应已经收到了,接着,函数会检查HTTP服务器响应的状态值。完整的状态取值可参见W3C文档。当HTTP服务器响应的值为200时,表示状态正常。
处理从服务器得到的数据
有两种方式可以得到这些数据:
(1) 以文本字符串的方式返回服务器的响应
(2) 以XMLDocument对象方式返回响应

Tags in this post...

面试题 相关文章推荐
JMS中Topic和Queue有什么区别
May 15 面试题
联强国际笔试题面试题
Jul 10 面试题
在C语言中实现抽象数据类型什么方法最好
Jun 26 面试题
SQL语言面试题
Aug 27 面试题
Order by的几种用法
Jun 16 面试题
网络安全类面试题
Aug 01 面试题
一些Solaris面试题
Dec 22 面试题
设计模式的基本要素是什么
Apr 21 面试题
Why we need EJB
Oct 20 面试题
百度JavaScript笔试题
Jan 15 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
Jul 06 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
May 30 面试题
什么是Remote Module
Jun 10 #面试题
AJAX的全称是什么
Nov 06 #面试题
Prototype是怎么扩展DOM的
Oct 01 #面试题
GWT都有什么特性
Dec 02 #面试题
JavaScript获取当前url根目录(路径)
Feb 19 #面试题
ajax是什么及其工作原理
Feb 08 #面试题
Ajxa常见问题都有哪些
Mar 26 #面试题
You might like
一个查看session内容的函数
2006/10/09 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
php经典算法集锦
2015/11/14 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
Angular2库初探
2017/03/01 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
Python实现微信翻译机器人的方法
2019/08/13 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python elasticsearch环境搭建详解
2019/09/02 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
台湾森森购物网:U-mall
2017/10/16 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
Nike香港官网:Nike HK
2019/03/23 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
美术专业个人自我评价
2014/01/18 职场文书
《悯农》教学反思
2014/04/28 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
先进个人评语大全
2015/01/04 职场文书
团日活动总结格式
2015/05/11 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
退休欢送会致辞
2015/07/31 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript