前段時間做項目使用了prototype.js後來發現一些複雜的情況,有時會有記憶體溢出的情況,索性乾脆不用了,為了保證程式的相容性,按prototype的介面實現了一個簡單的ajax封裝,Firefox下沒有測試.代碼沒格式化主要是想壓縮行數.
<html>
<head>
<script>
var syj={};
//發送ajax請求的方法
syj.Ajax=function(url,obj){
var httpRequest;
if (window.ActiveXObject)try{httpRequest = new ActiveXObject("Microsoft.XMLHTTP");}catch (e){try{httpRequest = new ActiveXObject("Msxml2.XMLHTTP");}catch (e){}}
if (!httpRequest){alert('不能建立XMLHTTP執行個體');obj.onComplete();}
httpRequest.onreadystatechange = function(){if (httpRequest.readyState == 4){obj['onComplete'](httpRequest);}}
if(url.indexOf('machineDate')==-1) url+=(url.indexOf('?')==-1?"?":"&")+("machineDate="+new Date().getTime());
url+=(url.indexOf('?')==-1?"?":"&")+obj.parameters;
if(obj.asynchronous==true) httpRequest.open(obj.method, url); else httpRequest.open(obj.method, url,false);
httpRequest.send(null);
return httpRequest;
};
function test(){
alert("test start ");
var url="http://www.baidu.com/";
syj.Ajax(url,{
method : "GET",
parameters : "s?wd=csdn",
asynchronous : true,
onFailure : function(httpRequest){
alert("出錯了!");
},
onComplete : function(httpRequest){
if(httpRequest.status==200){
alert(httpRequest.responseText);
}
}
}
);
alert("test end ");
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="測試" />
</body>
</html>