雖然微軟的VS中的控制項中有AJAX功能的控制項可以達到網頁址更新部分,可是一直沒有針對AJAX與Server互動的功能加以開發(ex:非同步檔案上傳...)

所以這個分類的文章我會用ASP.NET的泛型檔案還有控制項以及JavaScript還有HTML的技術做整合應用。

 

首先介紹XMLHttpRequest:

它是一個物件存在的最大意義就是它會調用JavaScript以程式化方式經由Http協定連線然後和server溝通。

而且最好的是這個動作可以在背景完成,有別於以往的傳統網頁,你每按下一個控制項網頁就要PostBack一次,

也就是這個技術產生出AJAX(網頁可以做非同步更新,也就是指更新需要更新的部分其他則照舊)

 

優點:

1.可以大幅降低網路資料流量

2.因為要求與回應皆可以在背景執行,所以網頁操作介面的反應會比傳統網頁好。

 

重點:

1.

使用XMLHttpRequest完整執行"要求/回應"流程如下:

a.開啟連線 : open()

b.網頁送出回應 : send()

c.接收server丟回來的回應並顯示 : responseText()

 

2.

.open()比較典型版本如下:

void open(DOMSString , DOMSString url , boolean async);

第一個參數DOMSString : 代表這次HTTP要求之方法:POST or GET(要用大寫)

第二個參數DOMSString : xxx.aspx 對應的泛型程式檔案名稱

第三個參數DOMSString : true:用非同步傳輸 false:同步傳輸。 

 

.send():

傳送資料到server

 

.responseText():

一但調用send()當server端執行完畢後,如果server回應的是字串資料,就會調用responseText()方法取得回應資料。

 

 

example:

1.首先在VS中建立一個泛型程式檔案,我取名為XMLHttpRequest-dat.ashx.cs,記得要放在App_Code資料夾中。(server端)

 

2.要建立一個新資料夾不然會出錯,裡面放C#程式我取名為:Default12.aspx(client 端)

前端程式碼:(client端)

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script>

function runRequest() {
try {

var client = new XMLHttpRequest();
client.open('POST', 'XMLHttpRequest-dat.ashx', false);
client.send();

//把從server接收到的資料,設給label顯示
document.getElementById('Label1').innerHTML = client.responseText;
} catch (e) {
document.getElementById('Label1').innerHTML = e;
}
}
</script>
</head>


<body>

<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>

 

//這一行要放在form外面不然會出錯

<button onclick="runRequest()">取得伺服器資料</button>
</body>
</html>

 

泛型程式碼:(server端)

namespace Ajax
{
/// <summary>
///XMLHttpRequest_dat1 的摘要描述
/// </summary>
public class XMLHttpRequest_dat1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{

//回應給client的是text

context.Response.ContentType = "text/plain";

//回應給client的字串

context.Response.Write("hello world");
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()