AJAX技术之基本的封装 - Web 开发 / Ajax
ajaxDemo.js[b][/b]Ajax =
function(){
function request(url,opt){
function fn(){}
var async = opt.async !== false,
method = opt.method || 'GET',
encode = opt.encode || 'UTF-8',
data = opt.data || null,
success = opt.success || fn,
failure = opt.failure || fn;
method = method.toUpperCase();
if(data && typeof data == 'object'){//瀵硅薄杞崲鎴愬瓧绗︿覆閿?煎
data = _serialize(data);
}
if(method == 'GET' && data){
url += (url.indexOf('?') == -1 ? '?' : '&') + data;
data = null;
}
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xhr.onreadystatechange = function(){
_onStateChange(xhr,success,failure);
};
xhr.open(method,url,async);
if(method == 'POST'){
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=' + encode);
}
xhr.send(data);
return xhr;
}
function _serialize(obj){
var a = [];
for(var k in obj){
var val = obj[k];
if(val.constructor == Array){
for(var i=0,len=val.length;i<len;i++){
a.push(k + '=' + encodeURIComponent(val[i]));
}
}else{
a.push(k + '=' + encodeURIComponent(val));
}
}
return a.join('&');
}
function _onStateChange(xhr,success,failure){
if(xhr.readyState == 4){
var s = xhr.status;
if(s>= 200 && s < 300){
success(xhr);
}else{
failure(xhr);
}
}else{}
}
return {request:request};
}();
jsp页面
<script type="text/javascript" src="<%=basePath%>ajaxDemo.js"></script>
<script type="text/javascript">
function ajaxInsertReadState(){
var result = Ajax.request('servlet/ajaxDemo',{
data : 'name=jack&age=20',
success : function(xhr){
//to do with xhr
alert(xhr.responseText);
},
failure : function(xhr){
//to do with xhr
alert("=====");
}
}
);
}
</script>
------解决方案--------------------
什么问题。。