日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

初试Ajax.Net !

發(fā)布時間:2024/4/15 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初试Ajax.Net ! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
太郁悶了!公司電腦上裝的是VS.2003,暫時只能保留了

這兩天通過《Ajax基礎(chǔ)教程》開始學習Ajax技術(shù),在附錄的Ajax框架介紹中發(fā)現(xiàn)了這樣一句話:“利用Ajax.Net,你可以從JavaScript客戶調(diào)用.NET方法”。這是我夢寐以求的功能啊,于是迫不及待的開始研究下Ajax.Net,初試的結(jié)果令我對Ajax.Net非常滿意:)
????
???? 先做好準備工作,首先下載Ajax.Net,你可以從
這里獲得。最新版本是6.4.15.1,下載解壓后的文件夾中有個AjaxPro.2.dll,就是它了。使用VS2005新建web項目(注意,AjaxPro.2.dll不支持VS2003)(),并添加對AjaxPro.2.dll的引用,然后在Web配置文件中添加:
????????<httpHandlers>
????????????
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
????????
</httpHandlers>
???? 這個配置項表明所有的ajaxpro/*.ashx請求(即從客戶發(fā)送的Ajax請求)都交給AjaxPro.AjaxHandlerFactory處理,而不是由默認的System.Web.UI.PageHandlerFactory來處理。
???? 新建的web項目有個默認的_Default頁面,我們?yōu)槠浼由厦臻g如MyAjaxNetTest,然后在_Default的HTML第一句也要加上這個名目空間:
<%@ Page Language="C#" AutoEventWireup="true"?? CodeFile="Default.aspx.cs" Inherits="MyAjaxNetTest._Default" %> ???? 然后在PageLoad中注冊本頁面到AjaxPro中:
???????? protected void Page_Load(object sender, EventArgs e)
???????? {
???????????? AjaxPro.Utility.RegisterTypeForAjax(
typeof(_Default));
???????? }

????測試一
????一切已經(jīng)準備就緒了,我們先進行第一個測試,從客戶調(diào)用服務端的簡單方法。首先在_Default類中添加方法:
????????? [AjaxPro.AjaxMethod]
????????
public string GetServerTime()
???????? {
????????????
return DateTime.Now.ToString();
???????? }
????
???
客戶現(xiàn)在可以在JS中調(diào)用這個方法了,如
???????<script type="text/javascript">
??????? function getTime()
??????? {?????????
?????????? alert(MyAjaxNetTest._Default.GetServerTime().value);??????????
??????? }
??????? </script> ????
????然后你可以加個HTML的button,onclick處理函數(shù)設為getTime()。
<input id="Button1" type="button" value="button" onclick="getServerTime()"/>
????
????測試二
????
???? 為GetServerTime方法添加static修飾,測試仍然成功!

????測試三
???? 簡單方法調(diào)用已經(jīng)OK了,GetServerTime方法返回的是一個簡單的string,那么服務端可不可以返回稍微復雜一點的對象了?我們來試試。先新建一個Student類:
?????public class Student
???? {
????????
public string Name = "sky" ;
????????
public int????? Age = 26;
???? }

???? 服務端添加GetStudent方法:
???????? [AjaxPro.AjaxMethod]
????????
public Student GetStudent()
???????? {
????????????
return new Student();
???????? }

????對應的,客戶端添加調(diào)用:
??????? function getStudent()
??????? {
????????? var stu
= MyAjaxNetTest._Default.GetStudent().value ;
????????? alert(stu.Name
+ " " + stu.Age) ;
??????? }

????依照前面的加個HTML按鈕測試getStudent函數(shù),答案是,一切照我們預料的進行,客戶js可以訪問服務端返回的對象。

????測試四
????最后看看能夠在客戶端提交對象給服務器,先在服務端添加方法:
1 ????????private Student student = null;
2 ???????? [AjaxPro.AjaxMethod]
3 ????????public void SetStudent(Student stu)
4 ???????? {
5 ????????????this.student = stu;
6 ????????????string name = this.student.Name;
7 ???????? } ????可以在第六行添加斷點,然后當客戶端調(diào)用時,會進入該斷點。

???? 客戶端添加調(diào)用:
????? function putStudent()
??????? {
???????????? var stu
= MyAjaxNetTest._Default.GetStudent().value ;
???????????? stu.Name
= "chenqi" ;
???????????? MyDemo._Default.SetStudent(stu) ;
??????? }
??? 同樣,當調(diào)用putStudent這個js方法時,服務端進入斷點已經(jīng)表明客戶成功的提交了對象,并且對象的Name字段已經(jīng)改變?yōu)椤癱henqi”了。

????測試五
???? 前面客戶設置的都是Student的public字段,那么訪問屬性如何了?我們將Student定義更改如下:

???? public class Student
???? {
????????
private string name = "sky" ;
????????
public int Age = 26;

????????
public string Name
???????? {
????????????
get
???????????? {
????????????????
return this.name;
???????????? }
????????????
set
???????????? {
????????????????
this.name = value;
???????????? }
???????? }
???? }
????再重復前面的測試,結(jié)果我想已經(jīng)在你的料想中了。

???? 單從前面的幾個小測試,我已經(jīng)發(fā)現(xiàn)了使用Ajax.Net的方便與迅捷,看來B/S開發(fā)不再像我以前感受的那樣繁瑣了。



備忘錄:Ajax基礎(chǔ)
(1)創(chuàng)建XmlHttpRequest對象
???????????? var xmlHttp ;
???????????? function createXMLHttpRequest()
???????????? {
????????????????
if(window.ActiveXObject)
???????????????? {
???????????????????? xmlHttp
= new ActiveXObject("Microsoft.XMLHTTP") ;
???????????????? }
????????????????
else if(window.XMLHttpRequest)
???????????????? {
???????????????????? xmlHttp
= new XMLHttpRequest() ;
???????????????? }????????????????
???????????? }

(2)POST Ajax請求
???????????? function startRequest()
???????????? {
???????????????
createXMLHttpRequest() ;
???????????????? xmlHttp.onreadystatechange
= handleStateChangeComplex ;
???????????????? xmlHttp.open(
"POST" ,"WebForm1.aspx?timeStamp="+ new Date().getTime(),true) ;
???????????????? xmlHttp.setRequestHeader(
"CONTENT-TYPE","application/x-www-form-urlencoded") ;
???????????????? xmlHttp.send(
"ID=中國123") ;
???????????? }????????
???? 服務端可以通過QueryString獲取xmlHttp.send方法傳遞的參數(shù)。

(3)處理異步結(jié)果
???????????? function handleStateChangeComplex()
???????????? {
????????????????
if(xmlHttp.readyState == 4)
???????????????? {
????????????????????
if(xmlHttp.status == 200)
???????????????????? {
???????????????????????? document.getElementById(
"results").innerText = xmlHttp.responseText ;
???????????????????? }
???????????????? }
???????????? }


備忘錄:為何Ajax能如此風行?
???? 最主要的原因是它能極大提高Web頁面的表現(xiàn)力,從而極大地改善最終用戶體驗。其底層技術(shù)就是Ajax擁有異步局部刷新的能力,這個能力源于兩點:
(1)任何一個HTML page都是一個樹狀的DOM文檔,而JavaScript能夠操縱Dom文檔,包括添加、刪除、修改任一節(jié)點=》局部刷新。
(2)JavaScript可以通過XmlHttpRequest對象與服務器進行通信(GET/POST)。
(3)能異步獲取服務端返回的結(jié)果。

轉(zhuǎn)載于:https://www.cnblogs.com/yzwdli/archive/2007/09/24/903909.html

總結(jié)

以上是生活随笔為你收集整理的初试Ajax.Net !的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。