Ajax 返回三种值 解例
来源:互联网 发布:淘宝卖家怎么回复差评 编辑:程序博客网 时间:2024/06/05 22:52
Ajax中的x指的是xml,早期的数据格式都喜欢用XML,然后一层层的解析。当然简单的也会返回HTML(或称HTML片段)。
现在使用JSON格式的也很多。根据不同需求,给Ajax对象添加了三个实用方法:Ajax.text、Ajax.json、Ajax.xml。
Ajax.text返回纯文本,即responseText
Ajax.json返回json,即会将responseText解析成js对象
Ajax.xml返回xml文档,即responseXML
使用方式与Ajax.request相同,第一个参数是请求url,第二个是配置参数。
完整代码
01
Ajax =
02
function
(){
03
function
request(url,opt){
04
function
fn(){}
05
var
async = opt.async !==
false
,
06
method = opt.method ||
'GET'
,
07
type = opt.type ||
'text'
,
08
encode = opt.encode ||
'UTF-8'
,
09
data = opt.data ||
null
,
10
success = opt.success || fn,
11
failure = opt.failure || fn;
12
method = method.toUpperCase();
13
if
(data &&
typeof
data ==
'object'
){
//对象转换成字符串键值对
14
data = _serialize(data);
15
}
16
if
(method ==
'GET'
&& data){
17
url += (url.indexOf(
'?'
) == -1 ?
'?'
:
'&'
) + data;
18
data =
null
;
19
}
20
var
xhr = window.xmlhttpRequest ?
new
XMLHttpRequest() :
new
ActiveXObject(
'Microsoft.XMLHTTP'
);
21
xhr.onreadystatechange =
function
(){
22
_onStateChange(xhr,type,success,failure);
23
};
24
xhr.open(method,url,async);
25
if
(method ==
'POST'
){
26
xhr.setRequestHeader(
'Content-type'
,
'application/x-www-form-urlencoded;charset='
+ encode);
27
}
28
xhr.send(data);
29
return
xhr;
30
}
31
function
_serialize(obj){
32
var
a = [];
33
for
(
var
k
in
obj){
34
var
val = obj[k];
35
if
(val.constructor == Array){
36
for
(
var
i=0,len=val.length;i<len;i++){
37
a.push(k +
'='
+ encodeURIComponent(val[i]));
38
}
39
}
else
{
40
a.push(k +
'='
+ encodeURIComponent(val));
41
}
42
}
43
return
a.join(
'&'
);
44
}
45
function
_onStateChange(xhr,type,success,failure){
46
if
(xhr.readyState == 4){
47
var
s = xhr.status, result;
48
if
(s>= 200 && s < 300){
49
switch
(type){
50
case
'text'
:
51
result = xhr.responseText;
52
break
;
53
case
'json'
:
54
result =
function
(str){
55
return
(
new
Function(
'return '
+ str))();
56
}(xhr.responseText);
57
break
;
58
case
'xml'
:
59
result = xhr.responseXML;
60
break
;
61
}
62
success(result);
63
}
else
{
64
failure(xhr);
65
}
66
}
else
{}
67
}
68
return
(
function
(){
69
var
Ajax = {request:request}, types = [
'text'
,
'json'
,
'xml'
];
70
for
(
var
i=0,len=types.length;i<len;i++){
71
Ajax[types[i]] =
function
(i){
72
return
function
(url,opt){
73
opt = opt || {};
74
opt.type = types[i];
75
return
request(url,opt);
76
};
77
}(i);
78
}
79
return
Ajax;
80
})();
81
}();
- Ajax 返回三种值 解例
- ajax 返回dataset
- ajax返回java对象
- ajax返回乱码解决
- ajax 返回json
- AJAX数据返回问题
- AJax 返回 json
- AJAX返回值
- ajax提交返回错误
- ajax-返回json
- AJax返回值探讨
- ajax返回json数据
- ajax json 请求返回
- 关于Ajax返回值
- Ajax返回XML数据
- Ajax返回JSON数据
- ajax返回值
- Thinkphp ajax返回值
- GVIM
- 晚上去上自习
- Java中SerialVersionUID的作用
- UML画图文档——序列图
- UML序列图
- Ajax 返回三种值 解例
- 织梦子栏目调用上一级栏目列表
- 非常难缠的signal 11 (SIGSEGV)
- C/C++产生随机数
- POJ 2289 Jamie's Contact Groups (二分+dinic)
- XML第六讲:XML命名空间
- dialog全屏
- Apache内存池内幕1-7
- Android ListView 下拉刷新 上拉更多