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

首頁 > 開發 > AJAX > 正文

AJAX基礎教程及初步使用

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

什么是 AJAX?

AJAX (異步 JavaScript 和 XML) 是個新產生的術語,專為描述JavaScript的兩項強大性能.這兩項性能在多年來一直被網絡開發者所忽略,直到最近Gmail,Google suggest和google Maps的橫空出世才使人們開始意識到其重要性。

這兩項被忽視的性能是:

無需重新裝載整個頁面便能向服務器發送請求。

對XML文檔的解析和處理。

步驟 1 – "請!" --- 如何發送一個HTTP請求

為了用JavaScript向服務器發送一個HTTP請求,需要一個具備這種功能的類實例. 這樣的類首先由Internet Explorer以ActiveX對象引入,被稱為XMLHTTP。后來Mozilla,Safari 和其他瀏覽器紛紛仿效,提供了XMLHttpRequest類,它支持微軟的ActiveX對象所提供的方法和屬性。

因此,為了創建一個跨瀏覽器的這樣的類實例(對象),可以應用如下代碼:

以下為引用的內容:
if (window.XMLHttpRequest) { // Mozilla,Safari,...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}

(上例對代碼做了一定簡化,這是為了解釋如何創建XMLHTTP類實例. 實際的代碼實例可參閱本篇步驟3.)

如果服務器的響應沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作. 為了解決這個問題,如果服務器響應的header不是text/xml,可以調用其它方法修改該header.

http_request = new XMLHttpRequest();

http_request.overrideMimeType('text/xml');

接下來要決定當收到服務器的響應后,需要做什么.這需要告訴HTTP請求對象用哪一個JavaScript函數處理這個響應.可以將對象的onreadystatechange屬性設置為要使用的JavaScript的函數名,如下所示:

http_request.onreadystatechange = nameOfTheFunction;

注意:在函數名后沒有括號,也無需傳遞參數.另外還有一種方法,可以在扉頁(fly)中定義函數及其對響應要采取的行為,如下所示:

以下為引用的內容:
http_request.onreadystatechange = function(){
// do the thing
};

在定義了如何處理響應后,就要發送請求了.可以調用HTTP請求類的open()和send()方法,如下所示:

http_request.open('GET','http://www.example.org/some.file',true);

http_request.send(null);

open()的第一個參數是HTTP請求方式 – GET,POST,HEAD 或任何服務器所支持的您想調用的方式. 按照HTTP規范,該參數要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求.有關HTTP請求方法的詳細信息可參考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs。

第二個參數是請求頁面的URL.由于自身安全特性的限制,該頁面不能為第三方域名的頁面.同時一定要保證在所有的頁面中都使用準確的域名,否則調用open()會得到"permission denied"的錯誤提示.一個常見的錯誤是訪問站點時使用domain.tld,而當請求頁面時,卻使用www.domain.tld.

第三個參數設置請求是否為異步模式.如果是TRUE,JavaScript函數將繼續執行,而不等待服務器響應.這就是"AJAX"中的"A".

如果第一個參數是"POST",send()方法的參數可以是任何想送給服務器的數據. 這時數據要以字符串的形式送給服務器,如下所示:

name=value&anothername=othervalue&so=on

步驟 2 – "收到!" --- 處理服務器的響應

當發送請求時,要提供指定處理響應的JavaScript函數名。

http_request.onreadystatechange = nameOfTheFunction;

我們來看看這個函數的功能是什么.首先函數會檢查請求的狀態.如果狀態值是4,就意味著一個完整的服務器響應已經收到了,您將可以處理該響應。

以下為引用的內容:
if (http_request.readyState == 4) {
// everything is good,the response is received
} else {
// still not ready
}

readyState的取值如下:

0 (未初始化)

1 (正在裝載)

2 (裝載完畢)

3 (交互中)

4 (完成)

接著,函數會檢查HTTP服務器響應的狀態值. 完整的狀態取值可參見 W3C site. 我們著重看值為200 OK的響應。

以下為引用的內容:
if (http_request.status == 200) {
// perfect!
} else {
// there was a problem with the request,
// for example the response may be a 404 (Not Found)
// or 500 (Internal Server Error) response codes
}

在檢查完請求的狀態值和響應的HTTP狀態值后,您就可以處理從服務器得到的數據了.有兩種方式可以得到這些數據:

http_request.responseText – 以文本字符串的方式返回服務器的響應

http_request.responseXML – 以XMLDocument對象方式返回響應.處理XMLDocument對象可以用JavaScript DOM函數

步驟 3 – "萬事俱備!" - 簡單實例

我們現在將整個過程完整地做一次,發送一個簡單的HTTP請求. 我們用JavaScript請求一個HTML文件,test.html,文件的文本內容為"I'm a test.".然后我們"alert()"test.html文件的內容。

以下為引用的內容:

<script type="text/javascript" language="javascript">
var http_request = false;
function makeRequest(url) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla,Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET',url,true);
http_request.send(null);

}

function alertContents() {

if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
alert('There was a problem with the request.');
}
}

}
</script>
<span
style="cursor: pointer; text-decoration: underline"
onclick="makeRequest('test.html')">
Make a request
</span>

本例中:

用戶點擊瀏覽器上的"請求"鏈接;

接著函數makeRequest()將被調用.其參數 – HTML文件test.html在同一目錄下;

這樣就發起了一個請求.onreadystatechange的執行結果會被傳送給alertContents();

alertContents()將檢查服務器的響應是否成功地收到,如果是,就會"alert()"test.html文件的內容

步驟 4 – "X-文檔" --- 處理XML響應

在前面的例子中,當服務器對HTTP請求的響應被收到后,我們會調用請求對象的reponseText屬性.該屬性包含了test.html文件的內容.現在我們來試試responseXML屬性。

首先,我們新建一個有效的XML文件,后面我們將使用這個文件.該文件(test.xml)源代碼如下所示:

以下為引用的內容:
<?xml version="1.0" ?>
<root>
I'm a test.
</root>

在該腳本中,我們只需修改請求部分:

...
onclick="makeRequest('test.xml')">
...

接著,在alertContents()中,我們將alert()的代碼alert(http_request.responseText);換成:

var xmldoc = http_request.responseXML;

var root_node = xmldoc.getElementsByTagName('root').item(0);

alert(root_node.firstChild.data);

這里,我們使用了responseXML提供的XMLDocument對象并用DOM方法獲取存于XML文件中的內容。

Ajax初步使用方法

Ajax定義為“Asynchronous JavaScript XML”的簡稱,也就是異步的JavaScript和XML處理。從原理上看,主要是Ajax可以通過調用HttpRequest實現與服務器的異步通訊,并最終在網頁中實現豐富友好的用戶界面。

Ajax使用初步,配置步驟:

1、把Ajax.dll copy到應用系統bin目錄下,然后在工程引用中引用Ajax.dll。

2、配置web.config,添加如下信息

以下為引用的內容:

<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory,Ajax" />
</httpHandlers>3.假設應用系統叫Document,目錄格式為Pages/AjaxTest
4.在Pages/AjaxTest下建立cs文件AjaxMethod.cs,添加如下方法
//[Ajax.AjaxMethod]
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public static string GetNIVNumber(string str)
{
return str;
}5.在Pages/AjaxTest下建立頁面AjaxForm.aspx
<HTML>
<HEAD>
<title>AjaxForm</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript">
function testAjax()
{
var first=document.getElementById("txtfirst");
AjaxMethod.GetNIVNumber(first.value,callback_GetNIVNumber);
}
function callback_GetNIVNumber(res)
{
var obj=document.getElementById("txtsecond");
obj.value=res.value;
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<INPUT style="Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 40px" type="button" value="Button"
onclick="testAjax();">
<asp:TextBox id="txtfirst" style="Z-INDEX: 102; LEFT: 40px; POSITION: absolute; TOP: 40px" runat="server"></asp:TextBox>
<asp:TextBox id="txtsecond" style="Z-INDEX: 103; LEFT: 40px; POSITION: absolute; TOP: 72px" runat="server"></asp:TextBox>
</form>
</body>
</HTML>protected System.Web.UI.WebControls.TextBox txtfirst;
protected System.Web.UI.WebControls.TextBox txtsecond;
private void Page_Load(object sender,System.EventArgs e)
{
//注冊,其中Document.Pages.AjaxTest.AjaxMethod為AjaxMethod.cs方法所在的命名空間
Ajax.Utility.RegisterTypeForAjax(typeof(Document.Pages.AjaxTest.AjaxMethod));
}

然后運行就可以了,實現效果:在第一個textbox中輸入內容,點擊button,就把內容顯示到第二textbox中。這只是一個簡單的示例,還可以修改調用方法,從數據庫讀取以及更復雜的操作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
秋霞成人午夜鲁丝一区二区三区| 国产一区二区动漫| 国产一区二区三区在线免费观看| 国产一区二区三区久久精品| 麻豆国产va免费精品高清在线| www.久久草.com| 欧洲中文字幕国产精品| 日韩福利在线播放| 欧美高清视频在线播放| 欧美日韩在线视频首页| 91视频国产高清| 日韩欧美999| 日韩av在线看| 日韩最新在线视频| 亚洲va久久久噜噜噜久久天堂| 久久精品中文字幕| 欧美黑人国产人伦爽爽爽| 中文字幕亚洲一区在线观看| 欧美激情按摩在线| www.亚洲一区| 亚洲天堂男人天堂| 美女久久久久久久久久久| 久久亚洲一区二区三区四区五区高| 久久精品亚洲一区| 国产ts人妖一区二区三区| 国产成人avxxxxx在线看| 岛国精品视频在线播放| 在线日韩日本国产亚洲| 日韩免费av在线| 久久久久久伊人| 中文字幕久久久| 亚洲国产古装精品网站| 色综合久久天天综线观看| 亚洲国产精品悠悠久久琪琪| 国产精品极品美女粉嫩高清在线| 97精品国产91久久久久久| 国产91精品青草社区| 亚洲韩国日本中文字幕| 国产精品久久久久久久久久ktv| 欧美做爰性生交视频| www.久久撸.com| 国产精品欧美激情在线播放| 日韩中文字幕免费看| 国产区精品在线观看| 亚洲欧美在线磁力| 久久精品中文字幕| 欧美日韩一区二区精品| 亚洲人成电影网站色xx| 亚洲欧美精品伊人久久| 色综合五月天导航| 欧美午夜宅男影院在线观看| 久久这里有精品| 久久影院资源网| 亚洲图片欧美日产| 91日本在线视频| 疯狂做受xxxx欧美肥白少妇| 亚洲成人精品av| 91午夜理伦私人影院| 欧美成aaa人片免费看| 亚洲第一色在线| 成人免费观看49www在线观看| 欧美高清视频在线| 国产一区二区三区在线观看视频| 日韩成人av在线播放| 久久久久久91| 欧美成人午夜视频| 亚洲日韩欧美视频| 久久久久久久久久久免费| 欧美激情第一页xxx| 69国产精品成人在线播放| 日韩在线观看免费高清| 欧美xxxx做受欧美.88| 欧洲美女7788成人免费视频| 日韩动漫免费观看电视剧高清| 国产suv精品一区二区三区88区| 精品亚洲国产视频| 久99久在线视频| 欧美日韩色婷婷| 成人福利在线观看| 俺也去精品视频在线观看| 久久好看免费视频| 日韩国产激情在线| 久久久亚洲影院你懂的| 国产成人涩涩涩视频在线观看| 久久福利网址导航| 欧美精品电影在线| 亚洲欧美日韩久久久久久| 国产福利精品视频| 亚洲精品美女视频| 亚洲欧洲一区二区三区久久| 欧美在线亚洲在线| 欧美日韩国产999| 国产午夜精品一区理论片飘花| 日韩视频欧美视频| 日韩av在线免费播放| 久久久久国产一区二区三区| 亚洲xxx视频| 一二美女精品欧洲| 福利二区91精品bt7086| 欧美福利视频网站| 亚洲韩国欧洲国产日产av| 国产精品一区二区久久国产| 欧美性xxxx18| 国产精品亚洲自拍| 一本久久综合亚洲鲁鲁| 中文字幕av一区二区| 久久五月情影视| 国产精品夜间视频香蕉| 91亚洲国产成人久久精品网站| 亚洲最大在线视频| 中文字幕无线精品亚洲乱码一区| 亚洲国产精品久久久久| 国产精品9999| 日本亚洲精品在线观看| 成人久久一区二区| 色与欲影视天天看综合网| 日韩视频中文字幕| 国产91精品黑色丝袜高跟鞋| 久久久精品一区| 欧美午夜无遮挡| 97精品视频在线| 国产精品69精品一区二区三区| 国产在线视频一区| 欧美一级在线播放| 精品美女国产在线| 日韩av中文字幕在线播放| 国产成人免费91av在线| 亚洲在线一区二区| 欧美午夜精品久久久久久浪潮| 在线播放日韩欧美| 国产v综合v亚洲欧美久久| 国产九九精品视频| 91在线视频精品| 91精品视频在线| 欧美日韩ab片| 日韩精品在线观看视频| 国产精品视频专区| 精品五月天久久| 欧美二区在线播放| 国产日韩视频在线观看| 1769国产精品| 久久影院免费观看| 亚洲精品视频网上网址在线观看| 国产精品露脸av在线| 久久久久国产精品一区| 九九热这里只有精品6| 国产在线观看精品| 亚洲国产女人aaa毛片在线| 尤物tv国产一区| 亚洲女人天堂网| 欧美国产高跟鞋裸体秀xxxhd| 国产一区香蕉久久| 久久精品国产96久久久香蕉| 亚洲欧美制服丝袜| 久久免费少妇高潮久久精品99| 色综合久久久888| 7777精品久久久久久| 亚洲国产精品久久久久久| 久久影院在线观看| 国产午夜精品美女视频明星a级| 欧美激情一级二级| 欧美疯狂做受xxxx高潮| 久久久久免费视频| 精品国内自产拍在线观看|