Ajax 對(duì)象 包含post和get兩種異步傳輸方式
更新時(shí)間:2009年07月21日 12:58:50 作者:
Ajax對(duì)象接受一個(gè)對(duì)象字面量為參數(shù),這個(gè)對(duì)象字面量中包含method,url,success,params,fail參數(shù)
復(fù)制代碼 代碼如下:
/**
* @author Supersha
* @QQ:770104121
*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajax Document</title>
<script type="text/javascript">
//注意,編碼要同意為utf-8才能避免中文參數(shù)和返回中文的亂碼問題
function Ajax(prop){
this.action(prop); //在實(shí)例化的時(shí)候就調(diào)用action方法
}
Ajax.prototype = {
createXHR: function(){ //創(chuàng)建XMLHttpRequest對(duì)象
var xhr = false;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xhr;
},
action: function(prop){
var xhr = this.createXHR();
if (xhr) {
var url = encodeURI(prop["url"]); //對(duì)URL進(jìn)行編碼
if (prop["method"] == "GET" && url && prop["success"]) { //GET方法
xhr.onreadystatechange = function(){
(function(){ //自執(zhí)行函數(shù)用于檢查服務(wù)器的返回狀態(tài)并執(zhí)行回調(diào)函數(shù)
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //執(zhí)行回調(diào)函數(shù)
}
})();
};
//alert(prop["hander"] instanceof Function);
xhr.open("GET", url, true);
xhr.send(null);
}
else
if (prop["method"] == "POST" && url && prop["success"]) { //POST方法
xhr.onreadystatechange = function(){
(function(){
if (xhr.readyState == 4 && xhr.status == 200) {
prop["success"](xhr); //執(zhí)行回調(diào)函數(shù)
}
})();
};
if (prop["params"]) {
url = url.indexOf("?") > -1 ? url + "&" + prop["params"] : url +"?" + prop["params"];
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(null);
}
}
else
if (!xhr && prop["fail"]) {
prop["fail"]();
}
}
}
function getData(){
var ajax = new Ajax({
url: "test.php",
method: "POST",
success: onComplete,
params: "name="+escape("沙鋒") //進(jìn)行編碼
});
}
function onComplete(obj){
alert(unescape(obj.responseText)); //進(jìn)行轉(zhuǎn)碼
}
</script>
</head>
<body>
<input type="button" value="Get Data" onclick="getData()"/>
</body>
</html>
注釋:
Ajax對(duì)象接受一個(gè)對(duì)象字面量為參數(shù),這個(gè)對(duì)象字面量中包含method,url,success,params,fail參數(shù)
method:"GET"或者"POST"
url:服務(wù)器端文件路徑
success:當(dāng)請(qǐng)求沒有錯(cuò)誤的時(shí)候,調(diào)用的回調(diào)函數(shù),該回調(diào)函數(shù)帶一個(gè)XMLHttpRequest對(duì)象的參數(shù)
fail:當(dāng)請(qǐng)求錯(cuò)誤的時(shí)候調(diào)用
params:當(dāng)使用POST方法發(fā)送請(qǐng)求是,params為參數(shù)字符串
相關(guān)文章
AJAX請(qǐng)求隊(duì)列實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了AJAX請(qǐng)求隊(duì)列的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測方法
https可以徹底解決劫持的問題。但是一般虛擬主機(jī)都不支持 https,難道http只能任流氓們惡意劫持么?下面通過本文給大家介紹Ajax 實(shí)現(xiàn)網(wǎng)站劫持的檢測方法,需要的朋友可以參考下2017-08-08
AJAX解析XML實(shí)例之下拉框省、市二級(jí)聯(lián)動(dòng)
實(shí)現(xiàn)省、市二級(jí)聯(lián)動(dòng),當(dāng)選擇某一省時(shí),改省下面的市就會(huì)在另一個(gè)下拉框顯示出來,下面有個(gè)不錯(cuò)的示例,需要的朋友可以參考下2013-11-11
ajax回調(diào)函數(shù)參數(shù)傳遞正確方法
ajax回調(diào)函數(shù)參數(shù)傳遞正確方法,很多朋友習(xí)慣的寫錯(cuò)了,這里簡單的小結(jié)下。2010-12-12
jquery ajax 向后臺(tái)傳遞數(shù)組參數(shù)示例
在JS中向后臺(tái)傳遞數(shù)組參數(shù),如果數(shù)組中放的是對(duì)象類型,傳遞到后臺(tái)是顯示的只能是對(duì)象字符串--[object Object],具體的原因及解決方法如下,有類似問題的朋友可以參考下2013-07-07
Ajax配合Spring實(shí)現(xiàn)文件上傳功能代碼
最近在開發(fā)一個(gè)可以上傳圖片到服務(wù)器的web表面頁面,下面給大家分享需求和實(shí)現(xiàn)思路,需要的的朋友參考下吧2017-05-05

