关注小众语言、AI技术,记录、分享技术点滴!

0%

JS-AJAX类

随着WEB2.0的到来,AJAX技术成为了网站首选的靓点技术,从表单提交到“无刷新”体验,从而在给用户带来友好体验的同时又提高与数据库的快速交互。为方便“新手”更方便的让网站使用AJAX技术,本人特封装一个小型的AJAX类如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* @package Ajax类
* @author 阿德
* @version 0.1
* @dependence 09.12
* @link http://www.zzlabs.com.cn
*
* domId = 'result';
* url = 'result.php';
* parameter = 'id='+id;
* method = 'get'; //传输方式
* asynchronism = true //是否异步
* new Ajax().ajaxRequest(domId,url,parameter,method,asynchronism,function callBack(result){$('result').innerHTML = result.responseText;});
*/
if ($ == undefined){
var $ = function(id){return document.getElementById(id);}
}
function Ajax(){
var _domId = null;
var _xmlHttp = null;
var _isAsynchronism = true;
var _successFunction = null;
this.createXMLHttpRequest = function(){
try{
if(window.ActiveXObject){
_xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if(window.XMLHttpRequest){
_xmlHttp = new XMLHttpRequest();
} else{
_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
}
} catch(e){
alert(e.name + " : " + e.message);
}
};
this.doPost = function(_url, _parameter){
try{
_xmlHttp.open("POST", _url, _isAsynchronism);
_xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
_xmlHttp.send(_parameter);
} catch(e){
alert(e.name + " : " + e.message);
}
};
this.doGet = function(_url, _parameter){
try{
var _random = Math.round(Math.random() * 10000);
var _getParameter = (_url + "?random=" + _random + "&" + _parameter);
if(_getParameter.length > 255) {
this.doPost(_url, _parameter);
} else{
_xmlHttp.open("GET", _getParameter,_isAsynchronism);
_xmlHttp.send(null);
}
} catch(e){
alert(e.name + " : " + e.message);
}
};
this.backFunction = function(){
if(_successFunction == null){
return;
}
if(_isAsynchronism){
if(_domId){
switch(_xmlHttp.readyState){
case 1:
$(_domId).innerHTML = '请稍候,正在建立连接...';
break;
case 2:
$(_domId).innerHTML = '请稍候,正在发送数据...';
break;
case 3:
$(_domId).innerHTML = '请稍候,正在接收数据...';
break;
}
}
if((_xmlHttp.readyState == 4) && (_xmlHttp.status == 200)){
_successFunction(_xmlHttp);
return;
}
}
};
this.ajaxRequest = function(_id, _url, _parameter, _method, _asynchronism, _backFunction){
this.createXMLHttpRequest();
_domId = _id;
_isAsynchronism = _asynchronism;
_successFunction = _backFunction;
_xmlHttp.onreadystatechange = this.backFunction;
if(_method.toLowerCase() == "post"){
this.doPost(_url, _parameter);
}
else if(_method.toLowerCase() == "get"){
this.doGet(_url, _parameter);
}
};
}

调用说明:
1、加载JS文件(在网站的任何位置加入)

2、实例化JS类

1
new Ajax().ajaxRequest(domId,url,parameter,method,asynchronism,function callBack(result){$('result').innerHTML = result.responseText;});

3、参数说明
(1)domId:表示需要显示结果的容器ID号,如domId = ‘logining’,如果没有指定可以为domId=’’或domId=null
(2)url:表示服务端接收的页面地址,如url = ‘send.ph’
(3)parameter:表示服务羰接收页面的参数,如parameter = ‘type=’+type,如果该页面无需参数可以为parameter = null
(4)method:表示AJAX的请求方法为method = ‘get’或method=’post’
(5)asnchronism:表示是否同步,如asnchronism = true为同步,asnchronism=false为不同步,默认为同步即可
(6)function callBack():表示是回调函数把从服务端返回的结果返回,只要在该函数中处理即可。

注:该函数只是简单的实现AJAX的基本功能,主要特点是小巧,同时可自由扩展,如果网站只需要调用AJAX功能而不需要其它复杂的功能时可以考虑使用本AJAX类。