千家信息网

javascript Ajax类的实现代码

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"javascript Ajax类的实现代码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"javascript Ajax类的实现代码"吧!
千家信息网最后更新 2026年10月31日javascript Ajax类的实现代码

本篇内容主要讲解"javascript Ajax类的实现代码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"javascript Ajax类的实现代码"吧!

与现在那些Ajax框架比较,优劣之处?看完再说吧:
1、Ajax.js

复制代码 代码如下:


/*
AJAX v1.4
HJF 2009-7-5
*/
function AjaxDO(){

this.HttpRequest = null;

this.openMethod = null; //HTTP请求的方法,为Get、Post 或者Head

this.openURL = null; //是目标URL。基于安全考虑,这个URL 只能是同网域的,否则会提示"没有权限"的错误。

this.openAsync = null; //是指定在等待服务器返回信息的时间内是否继续执行下面的代码。如果为False,则不会继续执行,直到服务器返回信息。默认为True。

this.ProcessRequestFunction = function(_HttpRequest) {return;} //处理返回信息的函数入口

this.ProcessRequestParam = null; //处理访问信息时的附加参数

this.LoadingImg = null; //正在载入的图片,一般为.gif动画

//初始化HttpRequest
this.InitHttpRequest = function(){
var http;

// try {
// http = new ActiveXObject("Msxml2.XMLHTTP");
// } catch(e) {
// try {
// http = new ActiveXObject("Microsoft.XMLHTTP");
// } catch(e) {
// http = false;
// }
// }

try {
if(window.ActiveXObject){
for(var i=5; i; i--){
try{
if(i==2){
http = new ActiveXObject("Microsoft.XMLHTTP");
}else{
http = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
}
break;
}catch(e){
//alert(i);
http = false;
}
}
}else if(window.XMLHttpRequest){
http = new XMLHttpRequest();
if(http.overrideMimeType){
http.overrideMimeType("text/xml");
}
}
}catch(e){
http = false;
}

if(!http){
Alert("不能创建XMLHttpRequest对象实例");
return http;
}

this.HttpRequest = http;
return http;
}

//检测 this.HttpRequest
this.checkHttpRequest = function(){
if(!this.HttpRequest){
return this.InitHttpRequest();
}
return this.HttpRequest;
}

//修改MIME类别
//http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //如果要传文件或者Post 内容给服务器
//http.setRequestHeader("Content-Type","text/xml");
//http.setRequestHeader("Content-Type","gb2312");
this.setRequestHeader = function(mime){
if(!this.checkHttpRequest()){
return false;
}
try{
this.HttpRequest.setRequestHeader("Content-Type", mime);
return true;
}catch(e){
if(e instanceof Error){
Alert("修改MIME类别错误");
return false;
}
}
}

//设置状态改变的事件触发器
this.setOnReadyStateChange = function(funHandle, Param){
if(!this.checkHttpRequest()){
return false;
}
this.ProcessRequestFunction = funHandle;
this.ProcessRequestParam = Param;
return true;
}

this.setLoadingImg = function(ImgID){
this.LoadingImg = ImgID;
}

//建立HTTP连接
//open("method","URL"[,asyncFlag[,"userName"[, "password"]]])
this.Open = function(method, url, async, username, psw){
if(!this.checkHttpRequest()){
return false;
}
this.openMethod = method;
this.openURL = url;
this.openAsync = async;
if((this.openMethod==null) || ((this.openMethod.toUpperCase()!="GET")&&(this.openMethod.toUpperCase()!="POST")&&(this.openMethod.toUpperCase()!="HEAD"))){
Alert("请指定HTTP请求的方法,为Get、Post 或者Head");
return false;
}
if((this.openURL==null)||(this.openURL=="")){
Alert("请指定目标URL");
return false;
}
try{
this.HttpRequest.open(this.openMethod, this.openURL, this.openAsync, username, psw);
}catch(e){
if(e instanceof Error){
Alert("无法建立HTTP连接");
return false;
}
}

if(this.openMethod.toUpperCase()=="POST"){
if(!this.setRequestHeader("application/x-www-form-urlencoded")){
Alert("修改MIME类别失败");
return false;
}
}

if(this.openAsync){ //异步模式,程序继续执行
if(this.ProcessRequestFunction==null){
Alert("请指定处理返回信息的函数");
return false;
}
var _http_request_ajax = this.HttpRequest;
var _this_ajax = this;
this.HttpRequest.onreadystatechange = function(){
if(_http_request_ajax.readyState==4) {
if(_http_request_ajax.status==200) {
_this_ajax.ProcessRequestFunction(_http_request_ajax, _this_ajax.ProcessRequestParam, _this_ajax.LoadingImg);
}else{
Alert("您所请求的页面有异常。");
return false;
}
}
}
}

if(this.LoadingImg!=null){
funShow(this.LoadingImg);
}

return true;
}

//向服务器发出HTTP请求
//格式:name=value&anothername=othervalue&so=on
this.Send = function(idata){
if(!this.checkHttpRequest()){
return false;
}
var data = null;
if(this.openMethod.toUpperCase()=="POST"){
data = funEscapeAll(idata);
}
try{
this.HttpRequest.send(data);
return true;
}catch(e){
if(e instanceof Error){
Alert("向服务器发出HTTP请求失败");
return false;
}
}
}

//处理服务器返回的信息
this.getResponseText = function(type){
if(!this.checkHttpRequest()){
return false;
}
if(this.HttpRequest.readyState==4) {
if(this.HttpRequest.status==200) {
if((type!=null) && (type.toUpperCase()=="XML")){
return this.HttpRequest.responseXML;
}
return this.HttpRequest.responseText;
}else{
Alert("您所请求的页面有异常。");
return false;
}
}
}

//停止当前请求
this.abort = function(){
if(!this.checkHttpRequest()){
return false;
}

if(this.LoadingImg!=null){
funHide(this.LoadingImg);
}

if(this.HttpRequest.readyState>0 && this.HttpRequest.readyState<4){
this.HttpRequest.abort();
}
}

}

//=====================================================================================
//公共函数
//=====================================================================================
function $(_obj){
var o;
if (typeof(_obj)!="string")
return _obj;
else{
try{
document.all;
try{
o=document.all(_obj);
}catch(e){
return null;
}
}catch(ee){
try{
o=document.getElementById(_obj);
}catch(e){
return null;
}
}
return o;
}
}

function funEscapeAll(str){
var t = "&";
var s = str.split(t);
if(s.length<=0) return str;
for(var i=0; is[i] = funEscapeOne(s[i]);
}
return s.join(t);
}

function funEscapeOne(str){
var i = str.indexOf("=");
if(i==-1) return str;
var t = URLEncode(str.substr(i+1));
return str.substring(0, i+1)+t;
}

function URLEncode(str){
return encodeURIComponent(str);
/*
return escape(str).replace(/\+/g, "%2B").
replace(/\"/g,"%22").
replace(/\'/g, "%27").
replace(/\//g,"%2F");
*/
}

function funEscapeXML(content) {
if (content == undefined)
return "";
if (!content.length || !content.charAt)
content = new String(content);
var result = "";
var length = content.length;
for (var i = 0; i < length; i++) {
var ch = content.charAt(i);
switch (ch) {
case '&':
result += "&";
break;
case '<':
result += "<";
break;
case '>':
result += ">";
break;
case '"':
result += """;
break;
case '\'':
result += "'";
break;
default:
result += ch;
}
}
return result;
}

function funShow(_obj){
if(typeof(_obj)=="object")
_obj.style.visibility = "inherit";
else
$(_obj).style.visibility = "inherit";
}

function funHide(_obj){
if(typeof(_obj)=="object")
_obj.style.visibility = "hidden";
else
$(_obj).style.visibility = "hidden";
}

function Alert(str){
alert(str);
//window.status = str;
}

/*

使用例子:

function processRequest(http_request, _val, _loading_img){
if(http_request.responseXML.documentElement){
//alert(decodeURIComponent(http_request.responseXML.documentElement.xml));
}else{
//alert(decodeURIComponent(http_request.responseText));
}
alert(_val);
funHide(_loading_img);
}

1、GET
var ajax = new AjaxDO();

ajax.setLoadingImg(_loading_img);
ajax.setOnReadyStateChange(processRequest, _val);
ajax.Open("GET", url, true); //异步模式,程序继续执行
ajax.Send("");

ajax.Open("GET", url, false); //非异步模式,程序等待
ajax.Send("");
var xml_doc = ajax.getResponseText("XML");
var text_doc = ajax.getResponseText("TEXT");

2、POST
var ajax = new AjaxDO();

ajax.setLoadingImg(_loading_img);
ajax.setOnReadyStateChange(processRequest, _val);
ajax.Open("POST", url, true); //异步模式,程序继续执行
ajax.Send(data);

ajax.Open("POST", url, false); //非异步模式,程序等待
ajax.Send(data);
var xml_doc = ajax.getResponseText("XML");
var text_doc = ajax.getResponseText("TEXT");


注,客户端发送带有中文或HTML脚本的信息时,发送的信息必须调用:encodeURIComponent函数,例如:
var data = encodeURIComponent($('message').value);
实际是调用了两次,Ajax类内部又调用一次。

服务端(Java版)需要做下转码:
String message = request.getParameter("message");
message = URLDecoder.decode(message, "UTF-8");

*/


注,客户端发送带有中文或HTML脚本的信息时,发送的信息必须调用:encodeURIComponent函数,例如:
var data = encodeURIComponent($('message').value);
实际是调用了两次,Ajax类内部又调用一次。

服务端(Java版)需要做下转码:

String message = request.getParameter("message");
message = URLDecoder.decode(message, "UTF-8");
2、Demo.html

复制代码 代码如下:






Ajax类













3、图片

到此,相信大家对"javascript Ajax类的实现代码"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

信息 模式 代码 服务 程序 服务器 函数 处理 内容 实际 方法 类别 图片 客户 客户端 目标 脚本 错误 页面 UTF-8 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国智互联网科技 互联网最新的科技 互联网与科技金融数据 互联网科技的发展 互联网 新科技 互联网金融和金融科技 互联网实体化科技化 隆华科技工业互联网 黑科技闪耀互联网之光 湖南一路畅行互联网科技 广州市恰铎互联网科技有限公司 银川新华互联网科技学校联系电话 中和天地互联网科技有限公司 美国互联网科技公司 有人说阿里系是互联网科技企业 抖集互联网科技技术咨询 互联网金融运营模式中的金融科技 恒生科技指数 中概互联网 银川新华互联网科技学校招聘 高科技和互联网的现代国家 湖南永感互联网科技有限公司 互联网科技巨头监管 互联网 科技创业 万达互联网科技 互联网 新科技 汉立互联网科技有限公司联系电话 崇明区互联网教育科技售后服务 互联网金融运营模式中的金融科技 云南互联网科技学费 株洲百竞科技的互联网营销顾问
0