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

首頁 > 開發 > AJAX > 正文

AJAX在ASP.NET中的簡單應用實例代碼

2024-09-01 08:30:40
字體:
來源:轉載
供稿:網友
本文介紹了使用AJAX和ASP.NET編寫web應用程序的一個簡單方法。同時,討論了使用AJAX的好處和不足。為了舉例說明,本文給出了相應的JavaScript代碼和用C#.NET編寫的ASP.NET代碼。

以下討論的是和AJAX ASP.NET 實例代碼 相關的AJAX在ASP.NET中的簡單應用實例代碼教程文章,內容是本站精心挑選整理的教程,希望對廣大的網友給到幫助,下面是詳細內容:

  為什么使用AJAX

  也許大多數人已經知道AJAX的意思是異步JavaScript和XML(Asynchronous JavaScript and XML)。據我所知,這項技術最初是由Microsoft在1999年提出來的,也就是我們所熟知的"使用遠程調用(remote calls)的DHTML / JavaScript web應用程序"。這項技術的核心就是通過瀏覽器發出一個異步的HTTP請求來調用服務端的網頁或服務,在返回結果后,無需刷新就可以更新整個網頁。這項技術經過不斷地完善,到目前為此,使用AJAX的web程序從表現上看已經非常類似于Windows程序了。

  由于這項技術的實現需要依賴于前端的瀏覽器,因此,它的使用受到了限制。但在最近的幾年,由于瀏覽器功能的加強和一些公司,如Google、Amazon.com的許多基于AJAX的應用的不俗表現,終于使這項技術鳳凰涅磐、欲火重生。

  現在AJAX的使用已經非常廣泛,任何帶有豐富用戶體驗的動態網頁都會不約而同地使用AJAX。

  解決方案

  本文所描述的使用AJAX的方法非常簡單,而且效率很高。同時這種方法還非常容易維護,并且開發人員無需任何的特殊技巧就可以實現它,而且使用這種方法還可以跨瀏覽器。

  一個基本的AJAX實現需要兩個主要部分:一個使用JavaScript代碼編寫的客戶端HTML頁,這些JavaScript用來向服務端發送請求和接收響應;一個可以接收請求和向客戶端發送響應信息的遠程頁面??蛻舳说腏avaScript代碼的任務是建立一個XmlHttp對象,然后向服務端發送請求信息,最后通過回調方式處理服務端返回的響應信息。這一切都是由JavaScript代碼實現的。

  本文的例子使用ASP.NET程序實現,在實現上要做到以下幾點:

  1、AJAX可以在不同的ASP.NET頁上向不同的服務端頁發送請求。

  2、遠程頁面URL可以包含動態可計算的參數,這樣做可以在ASP.NET的后端代碼中更方便地建立URL字符串。

  3、遠程頁在更新HTML頁之前可以使用復雜的數據進行響應,這也可以由ASP.NET的后端代碼完成。

  4、一個服務端頁面可以是一個擴展的第三方的頁面,也可以是本身的web頁或服務。

  以上的幾點如圖1所示


圖1


  實現基本的AJAX JavaScript方法

  我將JavaScript方法分成兩部分:調用特殊頁的JavaScript方法和一般的JavaScript方法。特殊的方法包括一個回調方法,它的作用是更新頁面內容。而其它的AJAX方法負責建立一個XmlHttp對象,并向服務端發出一個異步的HTTP請求。

  建立的XmlHttp對象因客戶端瀏覽器的不同而有所差異。本文只考慮兩種瀏覽器:一個是Microsoft的IE系列瀏覽器;另一個是Mozilla系列瀏覽器,包括Mozilla Firefox、Netscape和Safari。我也在Opera瀏覽器上測試過,但我不能保證本文的代碼可以很好地運行Opera瀏覽器上。下面是如何建立XmlHttp對象的代碼:

function GetXmlHttpObject(handler)
{
 var objXmlHttp = null;
 if (!window.XMLHttpRequest)
 {
  // Microsoft
  objXmlHttp = GetMSXmlHttp();
  if (objXmlHttp != null)
  {
   objXmlHttp.onreadystatechange = handler;
  }
 }
 else
 {
  // Mozilla Netscape Safari
  objXmlHttp = new XMLHttpRequest();
  if (objXmlHttp != null)
  {
   objXmlHttp.onload = handler;
   objXmlHttp.onerror = handler;
  }
 }
 return objXmlHttp;
}

function GetMSXmlHttp()
{
 var xmlHttp = null;
 var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0",
"Msxml2.XMLHTTP.2.6","Microsoft.XMLHTTP.1.0",
"Microsoft.XMLHTTP.1","Microsoft.XMLHTTP"];
 for(var i=0; i<clsids.length && xmlHttp == null; i++) {
  xmlHttp = CreateXmlHttp(clsids[i]);
 }
 return xmlHttp;
}

function CreateXmlHttp(clsid) {
 var xmlHttp = null;
 try {
  xmlHttp = new ActiveXObject(clsid);
  lastclsid = clsid;
  return xmlHttp;
 }
 catch(e) {}
}


  由于MSXML5只是為Office設計的,因此,我們可以不考慮MSXML5。所以GetMSXmlHttp方法可以簡化為以下形式:

function GetMSXmlHttp() {
 var xmlHttp = null;
 var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0"];
 for(var i=0; i<clsids.length && xmlHttp == null; i++) {
  xmlHttp = CreateXmlHttp(clsids[i]);
 }
 return xmlHttp;
}


  我們可以看出,GetXmlHttpObject方法有一個handle參數,這個參數指向一個回調方法,這個回調方法將被定義在每一個需要刷新的aspx頁中。現在我們已經有了一個XmlHttp對象,接下來我們可以發送一個異步的HTTP請求了。

function SendXmlHttpRequest(xmlhttp, url) {
 xmlhttp.open('GET', url, true);
 xmlhttp.send(null);
}


  在以上代碼中我使用了一個GET HTTP請求發送了一個URL,你可以很容易修改以上的JavaScript代碼,使其發送其它的HTTP方法。

  寫在aspx頁中的方法

  現在我們已經編寫完調用遠程頁面的所有方法。為了執行這些方法,我們需要為GetXmlHttpObject方法傳遞一個回調方法名,然后向SendXmlHttpRequest方法傳遞一個URL字符串。下面是相應的實現代碼:

var xmlHttp;

function ExecuteCall(url)
{
 try
 {
  xmlHttp = GetXmlHttpObject(CallbackMethod);
  SendXmlHttpRequest(xmlHttp, url);
 }
 catch(e){}
}

//CallbackMethod will fire when the state
//has changed, i.e. data is received back
function CallbackMethod()
{
 try
 {
  //readyState of 4 or 'complete' represents
  //that data has been returned
  if (xmlHttp.readyState == 4 xmlHttp.readyState == 'complete')
  {
   var response = xmlHttp.responseText;
   if (response.length > 0)
   {
    //update page
    document.getElementById("elementId").innerHTML = response;
   }
  }
 }
 catch(e){}
}


  CallbackMethod方法負責更新頁面。在我們的例子中,它只更新了指定的HTTP對象的inner HTML。但在實際應用中,可以更新更多的內容。

  最后要解決的問題是我們如何在aspx頁中調用ExecuteCall方法。如何調用ExecuteCall方法取決于這個頁面要做什么。在一些情況下,ExecuteCall方法可以在JavaScript事件出發時調用。如果這樣做,我們還可以使用相應的aspx頁后端C#代碼將這個方法注冊為啟動腳本。

Page.RegisterStartupScript("ajaxMethod", String.Format("<script>ExecuteCall('{0}');</script>", url));


  我們可以將上面代碼加到ASP.NET后端代碼的Page_Prerender或Page_Load方法中。

  服務端頁面

  讓我們看看服務端頁面象什么。如果它是一個ASP.NET頁(我們假設的),我們僅僅對它的后端代碼感性趣。我們可以將.aspx文件中代碼都刪除,這樣絲毫不會影響這個aspx頁的功能。

  例如,我們有一個將攝氏度轉換為華氏度的web service。如果你將這個web service的URL的引用加入到你的工程中,Visual Studio將產生一個叫"com.developerdays.ItempConverterservice"的代理類,這個代理類使用當前的命名空間。有一個名為getTemp.aspx的aspx頁,它接收一個叫"temp"的查詢參數,這參數包含一個整數的攝氏度值。如http://localhost/getTemp.aspx?temp=25。這個aspx頁的后端代碼如下:

private void Page_Load(object sender, EventArgs e)
{
 Response.Clear();
 string temp = Request.QueryString["temp"];
 if (temp != null)
 {
  try
  {
   int tempC = int.Parse(temp);
   string tempF = getTempF(tempC);
   Response.Write(tempF);
  }
  catch
  {}
 }
 Response.End();
}

private string getTempF(int tempC)
{
 com.developerdays.ITempConverterservice
 svc = new ITempConverterservice();
 int tempF = svc.CtoF(tempC);
 return tempF.ToString();
}


  現在我們要建立一個可以調用上面的getTemp.aspx頁的請求字符串,這個字符串將傳遞到RegisterStartupScript方法中。代碼如下:

int tempC = 25;
string url = String.Format("http://localhost/" +
"getTemp.aspx?temp={0}", tempC);


  在一些簡單情況,如果要傳遞的只是簡單的文本,可以通過URL直接傳給ExecuteCall方法。

  結論

  本文舉了一個在任何ASP.NET程序都可以使用AJAX技術的簡單例子。AJAX除了能給用戶一些全新的體驗外,也有一些缺點和不足。至于是否使用AJAX技術,這完全取決于開發人員自身,在本文中我只是舉了個簡單的例子,學習它并不需要太多的時間,也不需要任何特殊的技能。

AJAX在ASP.NET中的簡單應用實例代碼文章就講到這里,歡迎瀏覽本站的其它內容,點擊這里返回首頁

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精久久久久久久久久人| 国产91网红主播在线观看| 国产欧美日韩免费看aⅴ视频| 91网在线免费观看| 亚洲精品久久久久久久久久久久久| 国模极品一区二区三区| 欧美精品激情在线观看| 国产精品日本精品| 欧美日韩国产成人高清视频| 国内精品久久久久久中文字幕| 91视频国产精品| 久久视频在线播放| 日韩专区在线观看| 91精品国产亚洲| 日韩精品视频免费专区在线播放| 欧美成人午夜剧场免费观看| 日韩亚洲欧美成人| 性欧美视频videos6一9| 亚洲色图激情小说| 久久av红桃一区二区小说| 91精品久久久久久久久久另类| 欧美日韩中文字幕在线视频| 一本色道久久88亚洲综合88| 国产精品久久一区主播| 精品中文字幕在线2019| 国产精品第二页| 九色成人免费视频| 成人黄色生活片| 在线色欧美三级视频| 精品av在线播放| 精品福利在线观看| 国产精品爱啪在线线免费观看| 日韩国产欧美精品一区二区三区| 色综合老司机第九色激情| 欧美大片在线看| 国产福利精品av综合导导航| 91精品国产高清久久久久久91| 日韩的一区二区| 亚洲国产美女精品久久久久∴| 国产精品视频公开费视频| 美女av一区二区| 97**国产露脸精品国产| 欧美精品中文字幕一区| 亚洲午夜未删减在线观看| 欧美激情2020午夜免费观看| 日韩免费不卡av| 欧美国产日韩一区二区三区| 久久网福利资源网站| 日韩精品中文字幕在线| 91色在线观看| 91天堂在线观看| 久久综合网hezyo| 亚洲综合小说区| 久久成人18免费网站| 国产视频精品xxxx| 欧美日韩ab片| 2018国产精品视频| 亚洲国产精品电影| 亚洲色图综合网| 91av在线免费观看视频| 欧美日韩在线免费观看| 最新国产精品亚洲| 91国自产精品中文字幕亚洲| 欧美久久精品午夜青青大伊人| 亚洲欧美精品伊人久久| 中文字幕久久精品| 国内精品久久久久久中文字幕| 欧美在线视频免费播放| 亚洲女性裸体视频| 91精品国产高清自在线看超| 日韩av在线免费观看一区| 成人信息集中地欧美| 中文字幕v亚洲ⅴv天堂| 日韩国产精品亚洲а∨天堂免| 欧美人与性动交a欧美精品| 日韩中文字幕在线精品| 伊人久久五月天| 91在线观看免费| 国产91精品久| 欧美自拍视频在线观看| 97香蕉超级碰碰久久免费的优势| 91亚洲精品视频| 国产精品久久久一区| 日韩资源在线观看| 最近免费中文字幕视频2019| 欧美最顶级丰满的aⅴ艳星| 姬川优奈aav一区二区| 中文字幕av一区| 国产精品日本精品| 精品久久久一区二区| 亚洲精品一区二区三区不| 成人国产精品久久久| 亚洲色图25p| 欧美激情中文字幕在线| 上原亚衣av一区二区三区| 亚洲福利视频二区| 在线视频欧美性高潮| 色999日韩欧美国产| 日韩av在线网页| 青青草99啪国产免费| 日本免费久久高清视频| 国产精品极品尤物在线观看| www.亚洲免费视频| 久久夜色精品国产欧美乱| 欧美日韩一区二区在线播放| 欧美做受高潮电影o| 久久久久久久久久久久av| 亚洲自拍小视频| 九九热99久久久国产盗摄| 亚洲毛片在线观看| 欧美日韩国产精品一区二区三区四区| 理论片在线不卡免费观看| 国产一区二区三区视频在线观看| 久久久精品一区二区| 2018日韩中文字幕| 亚洲美女性生活视频| 91亚洲精品久久久久久久久久久久| 国产成人aa精品一区在线播放| 亚洲精品资源在线| 欧洲s码亚洲m码精品一区| 日韩网站在线观看| 亚洲免费电影一区| 视频直播国产精品| 国产成人97精品免费看片| 最新中文字幕亚洲| 国内成人精品一区| 欧美大学生性色视频| 亚洲高清一二三区| 在线成人激情黄色| 国产精品久久久久久久久久东京| 日韩精品日韩在线观看| 日韩专区在线播放| 国产一区二区三区免费视频| 精品国产欧美一区二区五十路| 狠狠爱在线视频一区| 成人久久一区二区| 亚洲美女视频网| 伊人久久大香线蕉av一区二区| 九九久久久久99精品| 在线电影中文日韩| 午夜精品福利视频| 欧美俄罗斯性视频| 亚洲精品国产品国语在线| 亚洲精品第一国产综合精品| 91国产美女视频| 久久人91精品久久久久久不卡| 成人午夜高潮视频| 亚洲在线第一页| 国产成人精品优优av| 欧美激情网站在线观看| 久久久久国产精品一区| 成人免费激情视频| 日本欧美精品在线| 欧美国产乱视频| 亚洲国产精品高清久久久| 在线观看国产精品91| 欧美日韩在线看| 久久高清视频免费| 日韩av在线影视| 国产日韩欧美在线观看| 97精品国产97久久久久久免费| 91视频九色网站| 亚洲第一男人天堂| 日韩中文字幕视频在线观看|