日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

AJAX基礎(chǔ)教程及初步使用_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:如何讓W(xué)ebServer返回指定XML內(nèi)容
  通過創(chuàng)建WEBServer代理可以當(dāng)作本地類使用,但能不能返回指定的XML呢?比如通過checkpass服務(wù)檢測(cè)帳號(hào)和密碼之后要返回該用戶擁有的權(quán)限列表。怎么實(shí)現(xiàn)呢?   ASP.NET Web服務(wù)支持在公

什么是 AJAX?

AJAX (異步 JavaScript 和 XML) 是個(gè)新產(chǎn)生的術(shù)語(yǔ),專為描述JavaScript的兩項(xiàng)強(qiáng)大性能.這兩項(xiàng)性能在多年來一直被網(wǎng)絡(luò)開發(fā)者所忽略,直到最近Gmail,Google suggest和google Maps的橫空出世才使人們開始意識(shí)到其重要性。

這兩項(xiàng)被忽視的性能是:

無需重新裝載整個(gè)頁(yè)面便能向服務(wù)器發(fā)送請(qǐng)求。

對(duì)XML文檔的解析和處理。

步驟 1 – "請(qǐng)!" --- 如何發(fā)送一個(gè)HTTP請(qǐng)求

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

因此,為了創(chuàng)建一個(gè)跨瀏覽器的這樣的類實(shí)例(對(duì)象),可以應(yīng)用如下代碼:

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

(上例對(duì)代碼做了一定簡(jiǎn)化,這是為了解釋如何創(chuàng)建XMLHTTP類實(shí)例. 實(shí)際的代碼實(shí)例可參閱本篇步驟3.)

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

http_request = new XMLHttpRequest();

http_request.overrideMimeType('text/xml');

接下來要決定當(dāng)收到服務(wù)器的響應(yīng)后,需要做什么.這需要告訴HTTP請(qǐng)求對(duì)象用哪一個(gè)JavaScript函數(shù)處理這個(gè)響應(yīng).可以將對(duì)象的onreadystatechange屬性設(shè)置為要使用的JavaScript的函數(shù)名,如下所示:

http_request.onreadystatechange = nameOfTheFunction;

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

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

在定義了如何處理響應(yīng)后,就要發(fā)送請(qǐng)求了.可以調(diào)用HTTP請(qǐng)求類的open()和send()方法,如下所示:

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

http_request.send(null);

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

第二個(gè)參數(shù)是請(qǐng)求頁(yè)面的URL.由于自身安全特性的限制,該頁(yè)面不能為第三方域名的頁(yè)面.同時(shí)一定要保證在所有的頁(yè)面中都使用準(zhǔn)確的域名,否則調(diào)用open()會(huì)得到"permission denied"的錯(cuò)誤提示.一個(gè)常見的錯(cuò)誤是訪問站點(diǎn)時(shí)使用domain.tld,而當(dāng)請(qǐng)求頁(yè)面時(shí),卻使用www.domain.tld.

第三個(gè)參數(shù)設(shè)置請(qǐng)求是否為異步模式.如果是TRUE,JavaScript函數(shù)將繼續(xù)執(zhí)行,而不等待服務(wù)器響應(yīng).這就是"AJAX"中的"A".

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

name=value&anothername=othervalue&so=on

步驟 2 – "收到!" --- 處理服務(wù)器的響應(yīng)

當(dāng)發(fā)送請(qǐng)求時(shí),要提供指定處理響應(yīng)的JavaScript函數(shù)名。

http_request.onreadystatechange = nameOfTheFunction;

我們來看看這個(gè)函數(shù)的功能是什么.首先函數(shù)會(huì)檢查請(qǐng)求的狀態(tài).如果狀態(tài)值是4,就意味著一個(gè)完整的服務(wù)器響應(yīng)已經(jīng)收到了,您將可以處理該響應(yīng)。

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

readyState的取值如下:

0 (未初始化)

1 (正在裝載)

2 (裝載完畢)

3 (交互中)

4 (完成)

接著,函數(shù)會(huì)檢查HTTP服務(wù)器響應(yīng)的狀態(tài)值. 完整的狀態(tài)取值可參見 W3C site. 我們著重看值為200 OK的響應(yīng)。

以下為引用的內(nèi)容:
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
}

在檢查完請(qǐng)求的狀態(tài)值和響應(yīng)的HTTP狀態(tài)值后,您就可以處理從服務(wù)器得到的數(shù)據(jù)了.有兩種方式可以得到這些數(shù)據(jù):

http_request.responseText – 以文本字符串的方式返回服務(wù)器的響應(yīng)

http_request.responseXML – 以XMLDocument對(duì)象方式返回響應(yīng).處理XMLDocument對(duì)象可以用JavaScript DOM函數(shù)

步驟 3 – "萬(wàn)事俱備!" - 簡(jiǎn)單實(shí)例

我們現(xiàn)在將整個(gè)過程完整地做一次,發(fā)送一個(gè)簡(jiǎn)單的HTTP請(qǐng)求. 我們用JavaScript請(qǐng)求一個(gè)HTML文件,test.html,文件的文本內(nèi)容為"I'm a test.".然后我們"alert()"test.html文件的內(nèi)容。

以下為引用的內(nèi)容:

<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>

本例中:

用戶點(diǎn)擊瀏覽器上的"請(qǐng)求"鏈接;

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

這樣就發(fā)起了一個(gè)請(qǐng)求.onreadystatechange的執(zhí)行結(jié)果會(huì)被傳送給alertContents();

alertContents()將檢查服務(wù)器的響應(yīng)是否成功地收到,如果是,就會(huì)"alert()"test.html文件的內(nèi)容

步驟 4 – "X-文檔" --- 處理XML響應(yīng)

在前面的例子中,當(dāng)服務(wù)器對(duì)HTTP請(qǐng)求的響應(yīng)被收到后,我們會(huì)調(diào)用請(qǐng)求對(duì)象的reponseText屬性.該屬性包含了test.html文件的內(nèi)容.現(xiàn)在我們來試試responseXML屬性。

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

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

在該腳本中,我們只需修改請(qǐng)求部分:

...
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對(duì)象并用DOM方法獲取存于XML文件中的內(nèi)容。

Ajax初步使用方法

Ajax定義為“Asynchronous JavaScript XML”的簡(jiǎn)稱,也就是異步的JavaScript和XML處理。從原理上看,主要是Ajax可以通過調(diào)用HttpRequest實(shí)現(xiàn)與服務(wù)器的異步通訊,并最終在網(wǎng)頁(yè)中實(shí)現(xiàn)豐富友好的用戶界面。

Ajax使用初步,配置步驟:

1、把Ajax.dll copy到應(yīng)用系統(tǒng)bin目錄下,然后在工程引用中引用Ajax.dll。

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

以下為引用的內(nèi)容:

<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory,Ajax" />
</httpHandlers>3.假設(shè)應(yīng)用系統(tǒng)叫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下建立頁(yè)面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)
{
//注冊(cè),其中Document.Pages.AjaxTest.AjaxMethod為AjaxMethod.cs方法所在的命名空間
Ajax.Utility.RegisterTypeForAjax(typeof(Document.Pages.AjaxTest.AjaxMethod));
}

然后運(yùn)行就可以了,實(shí)現(xiàn)效果:在第一個(gè)textbox中輸入內(nèi)容,點(diǎn)擊button,就把內(nèi)容顯示到第二textbox中。這只是一個(gè)簡(jiǎn)單的示例,還可以修改調(diào)用方法,從數(shù)據(jù)庫(kù)讀取以及更復(fù)雜的操作。

分享:XML編程實(shí)例:用ASP XML打造留言本
一、讀者指引 讀者指引幫助你掌握本文的梗概。以免你看了大半才明白這編文章不適合你,給你造成視覺污染。 如果你正在用ASP XML寫一些程序,或者你正在學(xué)XML那就值得一看。 閱讀本文須具

來源:模板無憂//所屬分類:Xml教程/更新時(shí)間:2008-08-22
相關(guān)Xml教程