自己封装的ajax方法,兼容IE,FireFox,Chrome,Fafari等浏览器。方法内包括http请求发送和返回responose xml接收。
/*
author: linyang
date: 2012-01-30
*/
var myAjax = (function(){
/*
paramObj:{
url: request url,
method: GET or POST,
encode: character
}
return xmlDOMParser
*/
var _send_synchronous = function(paramObj){
var url, method, encode,httpRequest,parser;
url = paramObj.url;
method = paramObj.method;
encode = paramObj.encode;
if(typeof method == 'undefined')
method = 'GET';
if (window.ActiveXObject) {//IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {//FireFox,Chrome,Safari
httpRequest = new XMLHttpRequest();
}
httpRequest.open(method, url, false);
if(typeof encode != 'undefined')
httpRequest.setRequestHeader("Content-Type", "text/html;charset="+encode);
httpRequest.send();
if (window.ActiveXObject) {//IE
parser = new ActiveXObject("Microsoft.XMLDOM");
parser.async = false;
parser.load(httpRequest.responseXML);
} else if (document.implementation.createDocument) {
try {//FireFox
parser = document.implementation.createDocument("", "", null);
parser.async = false;
parser = (new DOMParser()).parseFromString(httpRequest.responseText, "text/xml");
} catch(e) {//Chrome,Safari
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", httpRequest.responseText, false);
xmlhttp.send(null);
parser = xmlhttp.responseXML.documentElement;
}
}
return parser;
}
/*
paramObj:{
url: request url,
method: GET or POST,
encode: character,
param: post param,
isAsync: boolean,
parserHandler: function
}
*/
var _send_ajax = function(paramObj){
var url,method,encode,httpRequest,param,isAsync,parser;
var parserHandler;
url = paramObj.url;
method = paramObj.method.toUpperCase();
encode = paramObj.encode;
if(method=='GET')
param = null;
else if(method=='POST')
param = paramObj.param;
isAsync = paramObj.isAsync;
parserHandler = paramObj.parserHandler;
if (window.ActiveXObject) {//IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {//FireFox,Chrome,Safari
httpRequest = new XMLHttpRequest();
}
httpRequest.onreadystatechange = function(){
if(httpRequest.readyState==4){
if(httpRequest.status==200){
if (window.ActiveXObject) {//IE
parser = new ActiveXObject("Microsoft.XMLDOM");
parser.async = false;
parser.load(httpRequest.responseXML);
} else if (document.implementation.createDocument) {
try {//FireFox
parser = document.implementation.createDocument("", "", null);
parser.async = false;
parser = (new DOMParser()).parseFromString(httpRequest.responseText, "text/xml");
} catch(e) {//Chrome,Safari
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", httpRequest.responseText, false);
xmlhttp.send(null);
parser = xmlhttp.responseXML.documentElement;
}
}
parserHandler.apply(parser,[]);
}else{
alert("远程服务调用失败!");
}
}
}
httpRequest.open(method, url, isAsync);
if(typeof encode != 'undefined')
if(method=='GET')
httpRequest.setRequestHeader("Content-Type", "text/html;charset="+encode);
else if(method=='POST')
httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+encode);
httpRequest.send(param);
}
return {
sendSynchronize:_send_synchronous,
sendAjax:_send_ajax
}
})();
使用例子:(来源于某网上商店 ^ ^)
myAjax.sendAjax({
url:"PointTransAction.do",
method:'POST',
encode:'GBK',
param:"giftid=" + id + "&time=" + new Date(),
isAsync:true,
parserHandler:function(){
var flag = this.getElementsByTagName('ret')[0].getAttribute('flag');
var msg = this.getElementsByTagName('ret')[0].getAttribute('msg');
if (flag == '0')
//do something
else
alert(msg);
}
});
说明:1,myAjax这个小的JavaScript库对外提供了两个方法:sendSynchronize和sendAjax,但其实sendAjax才是称得上真正的ajax,因为sendSynchronize方法只支持同步,sendAjax可以通过isAsync设置是否使用异步调用。之所以写了sendSynchronize是为了纪念以前在宇宙行那段磕磕绊绊的日子吧。。。
2,parserHandler为传入的回调函数,其中的this关键字是parser的引用。
3,库中的两个方法对xml解析的时候使用的都是同步加载,如果要实现异步加载那么同样需要回调函数:IE下onreadystatechange事件,而FireFox下是onload事件。
分享到:
相关推荐
接着,我们来看Firefox、Chrome、Safari和IE这些浏览器。Firefox是由Mozilla开发的开源浏览器,以其对Web标准的严格支持和扩展功能的灵活性而闻名。Chrome是Google的产品,以其速度和稳定性受到用户喜爱,其内核基于...
该压缩包包含的是一个使用JavaScript编写的QQ在线客服系统,其特点是支持在多个主流浏览器上运行,包括较为老旧的Internet Explorer 8至10,以及现代的Chrome、Safari和Firefox。JavaScript是一种广泛用于网页开发的...
标题提到的"firebug for IE6+, Firefox, Opera, Safari and Chrome",意味着这是一个跨浏览器的解决方案,旨在为开发者提供在不同浏览器上调试和优化网页的能力。 Firebug Lite是Firebug的轻量级版本,适用于不支持...
经测试,用此方法创建XMLHttpRequest对象,在运用AJAX的时候,可以的兼容IE6,IE7,IE8,Opera,Safari,Google Chrome,fireFox。主流的应该就这些吧?theWorld,遨游等浏览器都是以IE为核心的,所以肯定也没问题。 另外...
标题 "兼容ie,Firefox的文件上传" 涉及的核心知识点是实现跨浏览器的文件上传功能,特别是针对Internet Explorer(IE)和Firefox这两个主流浏览器的兼容性问题。在Web开发中,由于不同浏览器对HTML、CSS和JavaScript...
8. **CSS前缀**:为了实现新的CSS特性,浏览器厂商会添加自己的前缀,如`-webkit-`(Chrome/Safari)、`-moz-`(Firefox)、`-ms-`(IE)和`-o-`(Opera)。开发者需针对这些前缀编写兼容性代码。 9. **Error对象**...
只好自己修改了一下一个简单的评分功能插件,终于兼容IE6,IE7, IE8, Firefox, Opera, Chrome, Safari。效果参考: 用法:参考下载后的index.html 依赖: jQuery.js jQuery.rater.js rater.css star.gif star_...
- Firefox、Chrome、Safari 和 Opera 等浏览器需要特定的前缀,如 `-webkit-`、`-moz-`、`-ms-` 和 `-o-`,以支持某些 CSS3 属性。 14. **跨域 AJAX 请求** - IE 支持 `XDomainRequest` 对象处理跨域 AJAX,而...
本篇文章将详细介绍如何利用jQuery实现这一功能,支持包括IE、Firefox、Safari、Chrome和Opera在内的主流浏览器。 首先,我们需要创建一个基本的HTML表格结构,如Code1所示,包含表头(thead)和数据区域(tbody)...
接下来,我们将深入分析如何使Firefox和Google Chrome等浏览器支持Ajax,以及具体的实现细节。 ### Ajax的工作原理 Ajax的核心是`XMLHttpRequest`对象,它允许JavaScript在后台与服务器通信,从而获取或发送数据。...
前支持javascript调试功能的工具越来越多,主要分为ie和firefox两大阵营。其他浏览器上很难调试javascript。而Javascript Debug Toolkit解决了这个问题,可能在所有支持ajax请求的浏览器上调试javascript.
由于不同浏览器对XMLHttpRequest对象的支持程度不同,我们需要编写兼容代码来确保在所有主流浏览器(如IE、Firefox、Chrome、Safari等)中都能正常工作。以下是一些常见的兼容性问题及解决方案: #### 2.1 创建...
它确保在IE8及更高版本,以及其他现代浏览器如Chrome、Firefox、Safari和Opera中都能正常工作。 2. **易用性**:这款插件的集成和使用相当简单。只需要在页面中引入jQuery和DCalendar的JS文件,然后通过简单的...
6、页面兼容所有浏览器,IE6 Firefox chrome Opera Safari…… 7、独创的字条分布排序算法,使字条均匀分布到页面,美观性大幅提升 P.S.:没有时间做后台管理,程序管理页面捆绑到了WordPress插件中,需要的童鞋请...
简单的Ajax上传器一个用于跨浏览器Ajax文件上传的Javascript插件。 支持拖放,CORS和带有进度条的多个文件上传。 可在IE7-9,移动设备和...特征跨浏览器-适用于IE7 +,Firefox,Chrome,Safari,Opera 支持多个并发文
该插件的核心优势在于其对多种浏览器的广泛兼容性,包括Internet Explorer 6到10,Safari,Firefox,以及基于WebKit内核的浏览器如Chrome和Safari。同时,jQuery.nicescroll也支持智能终端设备的浏览器,确保在移动...
4.兼容 IE、FireFox?、Chrome、Opera、Safari 等浏览器 5.持静态 和 Ajax 异步加载节点数据 6.灵活的编辑(增/删/改/查)功能,可随意拖拽节点,还可以多节点拖拽哟 7.在一个页面内可同时生成多个 Tree 实例 8.支持...
摘要:脚本资源,jQuery,手风琴 CSS3+jQuery 手风琴图片折叠滑开代码、折叠图片特效(支持ie9、chrome、safari、firefox、opera) ,唉,不支持iE8,滑动展开与合拢的图片特效,希望大家喜欢。
总结来说,"Firefox火狐浏览器官方2.0.0.16-mac版本dmg安装包"代表了一个时代的Firefox,尽管它具有历史价值,但出于安全和功能考虑,现在应优先考虑使用最新版本的Firefox。同时,了解如何处理DMG文件和理解浏览器...
通过使用jQuery来实现iframe的高度自适应,我们可以确保内容在不同浏览器(包括IE、Firefox、Safari和Chrome)中的显示一致性,无论iframe内嵌的页面有多复杂。 首先,我们需要理解iframe的基本概念。IFrame,即...