亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

AJAX客戶端說明,XMLHttpRequest對象

2024-09-01 08:31:58
字體:
來源:轉載
供稿:網友

在CommunityServer中運用了自己的AJAX機制,沒有借助其他的輔助控件。其中客戶的XMLHttpRequest對象的封裝,就足以讓人大飽眼福,在一般的瀏覽器其都能夠運行AJAX。下面我們來學習學習這個咚咚,希望能給更多的人帶來幫助。

首先當然是要了解一下瀏覽器中的XMLHttp對象了:

XMLHTTP方法:
備注:客戶機可以使用XMLHTTP對象發送任意的HTTP請求,接受HTTP應答,還可以對應答的XML文檔進行解析。

Open方法:初始化一個Msxml2.XMLHTTP請求,指定HTTP請求方式、URL以及鑒定信息。

語法:
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )

參數介紹:

bstrMethod: 數據傳送方式,即GET或POST。
bstrUrl: 服務網頁的URL。
varAsync: 是否同步執行。缺省為True,即同步執行,但只能在DOM中實施同步執行。用中一般將其置為False,即異步執行。
bstrUser: 用戶名,可省略。
bstrPassword:用戶口令,可省略。

Send方法:發送HTTP請求到服務器,返回應答。

語法:
oXMLHttpRequest.send(varBody)

說明:此方法是否同步取決于Open方法的varAsync參數。如果設為True則為同步,調用立刻返回,如果設為False調用直到整個應答被接收了才返回。

setRequestHeader( bstrHeader, bstrvalue )

bstrHeader:HTTP 頭(header)
bstrvalue: HTTP 頭(header)的值

如果Open方法定義為POST,可以定義表單方式上傳:
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")

XMLHTTP屬性:

onreadystatechange:在同步執行方式下獲得返回結果的事件句柄。只能在DOM中調用。
responseBody: 結果返回為無符號整數數組。
responseStream: 結果返回為IStream流。
responseText : 結果返回為字符串。
responseXML: 結果返回為XML格式數據。

運用這個原理也可以做網絡小偷程序,網絡爬蟲應該就是應用這個東西來完成的吧,不過我沒有做過,可能在不久的將來會制作個來玩玩,這里我們最主要的是看看CS中是如何封裝他的:

1//Ajax Start
2/**////<summary>
3///創建回調對象,如果存在window.XMLHttpRequest()對象,則返回此對象,如果是IE則搜索Msxml2.XMLHTTP各個版本及Microsoft.XMLHTTP并創建對象返回。
4///</summary>
5function Ajax_GetXMLHttpRequest() {
6 if (window.XMLHttpRequest) {
7return new XMLHttpRequest();
8 } else {
9if (window.Ajax_XMLHttpRequestProgID) {
return new ActiveXObject(window.Ajax_XMLHttpRequestProgID);
} else {
var progIDs = ["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for (var i = 0; i < progIDs.length; ++i) {
var progID = progIDs[i];
try {
var x = new ActiveXObject(progID);
window.Ajax_XMLHttpRequestProgID = progID;
return x;
} catch (e) {
}
}
}
}
return null;
}
/**////<summary>
///Ajax回調。
///</summary>
///<param>調用服務端函數所在的類包括命名空間(如:NExplus.Controls.SiteHeader)。</param>
///<param>客戶端所對應的標記的ID(如:<div></div>)。</param>
///<param>服務端(方法)函數名稱(被AjaxMethod標記)。</param>
///<param>傳到服務器的字符串。</param>
///<param>同步或異步回調。</param>
///<param>調試/請求字符串。</param>
///<param>調試/輸出字符串。</param>
///<param>調試的錯誤信息。</param>
///<param>是否和控件及其值一起回調。</param>
///<param>Url地址。</param>
function Ajax_CallBack(type, id, method, args, clientCallBack, debugRequestText, debugResponseText, debugErrors, includeControlValuesWithCallBack, url) {

if (!url)
{
url = window.location.href;
url = url.replace(//#.*$/, '');//去除URL中標簽部分,即"#"之后的字符串。
//加入參數Ajax_CallBack并設為true,說明是AJAX回調。
if (url.indexOf('?') > -1)
url += "&Ajax_CallBack=true";
else
{
if (url.substr(url.length - 1, 1) == "/")
url += "default.aspx";

url += "?Ajax_CallBack=true";
}
}

var x = Ajax_GetXMLHttpRequest();//取得XMLHttpRequest對象。
var result = null;
if (!x) {
result = { "value":null, "error": "NOXMLHTTP"};
if (debugErrors) {
alert("error: " + result.error);
}
if (clientCallBack) {
clientCallBack(result);
}
return result;
}

x.open("POST", url, clientCallBack ? true : false);//以Post方式打開對象,這樣在服務端就可以用Request.Form獲取參數。
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
if (clientCallBack) {
//如果同步,判斷狀態,輸出錯誤消息。
x.onreadystatechange = function() {
var result = null;

if (x.readyState != 4) {
return;
}

if (debugResponseText) {
alert(x.responseText);
}

try
{
var result = eval("(" + x.responseText + ")");
if (debugErrors && result.error) {
alert("error: " + result.error);
}
}
catch (err)
{
if (window.confirm('The following error occured while processing an AJAX request: ' + err.message + '/n/nWould you like to see the response?'))
{
var w = window.open();
w.document.open('text/plain');
w.document.write(x.responseText);
w.document.close();
}

result = new Object();
result.error = 'An AJAX error occured. The response is invalid.';
}

clientCallBack(result);
}
}
var encodedData = "Ajax_CallBackType=" + type;
if (id) {
encodedData += "&Ajax_CallBackID=" + id.split("$").join(":");
}
encodedData += "&Ajax_CallBackMethod=" + method;
if (args) {
for (var i in args) {
encodedData += "&Ajax_CallBackArgument" + i + "=" + encodeURIComponent(args[i]);
}
}
//如果加入控件,則加入控件數據。
if (includeControlValuesWithCallBack && document.forms.length > 0) {
var form = document.forms[0];
for (var i = 0; i < form.length; ++i) {
var element = form.elements[i];
if (element.name) {
var elementValue = null;
if (element.nodeName == "INPUT") {
var inputType = element.getAttribute("TYPE").toUpperCase();
if (inputType == "TEXT" || inputType == "PASSWORD" || inputType == "HIDDEN") {
elementValue = element.value;
} else if (inputType == "CHECKBOX" || inputType == "RADIO") {
if (element.checked) {
elementValue = element.value;
}
}
} else if (element.nodeName == "SELECT") {
elementValue = element.value;
} else if (element.nodeName == "TEXTAREA") {
elementValue = element.value;
}
if (elementValue) {
encodedData += "&" + element.name + "=" + encodeURIComponent(elementValue);
}
}
}
}
//如果是調試,則彈出發送的數據。
if (debugRequestText) {
alert(encodedData);
}
x.send(encodedData);//向服務器發送數據。
if (!clientCallBack) {
if (debugResponseText) {
alert(x.responseText);
}
result = eval("(" + x.responseText + ")");
if (debugErrors && result.error) {
alert("error: " + result.error);
}
}
delete x;
return result;
}

//Ajax End
其他的不用多說明了,看注釋應該就差不多了,如果有不對的地方請批評指教,謝謝!

您可能感興趣的文章:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频在线观看网址| 精品国产欧美成人夜夜嗨| 国产精品第二页| 狠狠操狠狠色综合网| 国产日韩在线播放| 久久精品亚洲精品| 日韩在线视频网站| 国产精品一区二区久久国产| 国外视频精品毛片| 亚洲视频第一页| 久久精品99国产精品酒店日本| 亚洲免费av片| 大荫蒂欧美视频另类xxxx| 亚洲网站在线观看| 成人免费淫片视频软件| 亚洲第一中文字幕| 国产亚洲精品久久久久久| 91精品国产综合久久久久久蜜臀| 91久久嫩草影院一区二区| 九九热r在线视频精品| 5252色成人免费视频| 欧美精品日韩www.p站| 欧美激情精品久久久久久变态| 精品高清一区二区三区| 黑人巨大精品欧美一区二区三区| 在线免费看av不卡| 久久国产精品久久久久| 亚洲香蕉成视频在线观看| 性夜试看影院91社区| 久久久亚洲天堂| 亚洲精品视频免费在线观看| 久久成人精品一区二区三区| 欧日韩不卡在线视频| 色综合久综合久久综合久鬼88| 亚洲男人的天堂网站| 成人黄色片网站| 日本不卡视频在线播放| 色妞久久福利网| 久久综合国产精品台湾中文娱乐网| 亚洲国产天堂网精品网站| 国自在线精品视频| 日韩精品极品在线观看播放免费视频| 国产免费观看久久黄| 国产成人精品久久久| 亚洲欧洲黄色网| 国产免费一区二区三区在线能观看| 久久精品91久久香蕉加勒比| 狠狠躁天天躁日日躁欧美| 狠狠色噜噜狠狠狠狠97| 国产视频999| 热草久综合在线| 91在线视频精品| 成人黄色免费在线观看| 激情久久av一区av二区av三区| 久久人体大胆视频| 国产99在线|中文| 欧美一级bbbbb性bbbb喷潮片| 一区二区三区无码高清视频| 青青草99啪国产免费| 日韩国产激情在线| 日韩在线视频中文字幕| 97超碰蝌蚪网人人做人人爽| 色偷偷88888欧美精品久久久| 一区二区欧美在线| 久久久视频免费观看| 久久亚洲精品一区| 欧美精品久久一区二区| 日本不卡免费高清视频| 亚洲欧美综合图区| 日本精品在线视频| 91成人福利在线| 在线视频国产日韩| 欧美中文字幕在线观看| 国产精品av免费在线观看| 97国产成人精品视频| 国产成人综合久久| 日韩激情av在线播放| 亚洲欧美一区二区激情| 国产日韩在线精品av| 欧美另类第一页| 日韩欧亚中文在线| 91免费在线视频网站| 亚洲欧美日本伦理| 国产精品露脸自拍| 国产一区二区三区日韩欧美| 日韩一中文字幕| 91久久夜色精品国产网站| 精品日韩美女的视频高清| 亚洲免费成人av电影| 欧美理论在线观看| 一区二区三区 在线观看视| 亚洲人成网站999久久久综合| 国产一区红桃视频| 成人a在线观看| 美女福利视频一区| 国模吧一区二区| 国产精品激情av在线播放| 日韩精品视频在线观看网址| 美女国内精品自产拍在线播放| 国产性色av一区二区| 精品视频—区二区三区免费| 成年无码av片在线| 欧美在线www| 成人性生交大片免费看小说| 欧美一级在线播放| 狠狠操狠狠色综合网| 精品中文字幕乱| 国产精品福利在线| 精品亚洲aⅴ在线观看| 91久久久亚洲精品| 国产网站欧美日韩免费精品在线观看| 欧美野外猛男的大粗鳮| 亚洲理论电影网| 欧美日韩免费在线| 国产精品久久久久av免费| 国产视频精品xxxx| 日本一欧美一欧美一亚洲视频| 少妇激情综合网| 欧美日韩福利在线观看| 国产精品99久久99久久久二8| 亚洲欧美一区二区三区久久| 911国产网站尤物在线观看| 日韩大片在线观看视频| 国产精品天天狠天天看| 久久久亚洲国产| 91国产精品电影| 国产成人精品视频在线观看| 欧美另类极品videosbest最新版本| 伊人亚洲福利一区二区三区| 日韩免费高清在线观看| 欧美综合第一页| 国产精品一区专区欧美日韩| 久久福利视频导航| 色偷偷综合社区| 成人免费网站在线观看| 欧美有码在线观看| 成人av在线网址| 精品色蜜蜜精品视频在线观看| 国产精品美女久久久久久免费| 久久男人av资源网站| 日韩在线观看免费全集电视剧网站| 日韩在线欧美在线国产在线| 亚洲欧美中文日韩v在线观看| 国产欧美日韩中文| 欧美激情一区二区三区成人| 欧美黄网免费在线观看| 国内精品国产三级国产在线专| 亚洲成av人片在线观看香蕉| 日韩精品免费综合视频在线播放| 日本久久91av| 日韩av免费在线播放| 亚洲第一精品夜夜躁人人爽| 中文字幕欧美日韩精品| 在线播放国产一区二区三区| 最近2019中文字幕mv免费看| 欧美综合国产精品久久丁香| 欧美午夜电影在线| 欧美高清激情视频| 欧美激情欧美激情在线五月| 亚洲а∨天堂久久精品喷水| 欧美精品一区在线播放| 国产做受69高潮| 亚洲男女性事视频| 亚洲欧美日韩精品久久亚洲区|