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

首頁 > 開發 > AJAX > 正文

理解才能創新 輕松打造自己的AJAX框架

2024-09-01 08:26:32
字體:
來源:轉載
供稿:網友
本文實現的只是一個最基本的AJAX框架,雖然AJAX并不是什么新技術,但是做為一個框架并不是一篇文章就能說明白的。寫這篇文章的目的:希望能幫助初學者更好的學習、運用AJAX框架。

  我始終相信只有你真正理解了一種技術,了解了技術本身,你才能更好、更靈活的使用它。一個程序員對技術的了解并不能僅僅停留在對技術的應用上。

  環境:Window Xp sp2 + .Net FramwWork 2.0.50727。

  Asp.Net 2.0自帶的客戶端回調

  Asp.Net 2.0已經發布。2.0有了許多新特性,客戶端回調就是其中之一??蛻舳嘶卣{允許我們不經過回發而調用服務器端的方法,與AJAX提供的功能是一致的,但是不如AJAX靈活,AJAX可以自定義調用的方法, 2.0自帶的回調功能卻不行。

  要使用客戶端回調功能必須實現System.Web.UI.IcallbackEventHandler接口。

  這個接口包含兩個方法:

//客戶端回調時固定調用此方法
public void RaiseCallbackEvent(String eventArgument)
//執行完RaiseCallbackEvent后將調用此方法。此方法的返回值將被發回客戶端
public string GetCallbackResult()

  例一:

.cs:
String cbReference = Page.ClientScript.GetCallbackEventReference(this,"arg", "ReceiveServerData", "context");
String callbackScript;
callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + "} ;";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"CallServer", callbackScript, true);
javascript:
<script type="text/javascript">
function LookUpStock()
{
 var product = "";
 var lb = document.forms[0].ListBox1;
 if(lb.selectedIndex >= 0)
  product = lb.options[lb.selectedIndex].text;
  CallServer(product, "");
}
function ReceiveServerData(rValue) { Results.innerText = rValue; }
</script>


  更多內容查看MSDN。

  AJAX介紹

  AJAX并不是一種新的技術,而是一些已有技術的有機結合,主要包括:XmlHttp、Reflect。一個AJAX框架基本上包括:一個自定義的HttpHandler、一段JavaScript代碼。

  AJAX運行機制:

  以前我們使用XmlHttp實現無刷新頁面的時候,是用XmlHttp來請求一個隱藏的頁面,使用(Asp/Asp.Net)自帶的HttpHandler,而在AJAX中,我們請求的也是一個隱藏的頁面,不同的是這個頁面的HttpHandler是由我們自己來實現。 打造自己的AJAX:

  1. 首先我們要實現一個Http處理程序(HttpHandler)來響應客戶端的請求:

  實現自定義的HttpHandler需要實現IHttpHandler接口。

  該接口包含一個屬性和一個方法:
 

bool IHttpHandler.IsReusable
void IHttpHandler.ProcessRequest(HttpContext context)
Example:
bool IHttpHandler.IsReusable
{
 get { return true; }
}
void IHttpHandler.ProcessRequest(HttpContext context)
{
 context.Response.Clear(); //獲取要調用的方法
 string methodName = context.Request.QueryString["me"];
 //獲取程序集信息。
 //Czhenq.AJAX.Class1.Dencode是自定義的字符串編碼方法
 string AssemblyName = Czhenq.AJAX.Class1.Dencode(context.Request.QueryString["as"]); //獲取方法的參數
 string Arguments = context.Request.QueryString["ar"]; //開始調用方法
 Type type = Type.GetType(AssemblyName);
 MethodInfo method = type.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
 if (method != null)
 {
  //參數使用","分隔
  string[] args = Arguments.Split(",".ToCharArray());
  ParameterInfo[] paras = method.GetParameters();
  object[] argument = new object[paras.Length];
  for (int i = 0; i < argument.Length; i++)
  {
   if (i < args.Length) {
    //因為XmlHttp傳遞過來的參數全部時String類型,所以必須進行轉換
    //這里只將參數轉換為Int32,并不做其他考慮。
    argument[i] = Convert.ToInt32(args[i]);
   }
  }
  object value = method.Invoke(Activator.CreateInstance(type, true), argument);
  if (value != null) context.Response.Write(value.ToString());
  else context.Response.Write("error");
 }
 //處理結束
 context.Response.End();
}

  2. 客戶端Javascript代碼:

function CallMethod(AssemblyName,MethodName,Argus)
{
 var args = "";
 for(var i=0;i<Argus.length;i++)
  args += Argus[i] + ",";
  if(args.length>0) args = args.substr(0,args.length-1);
  var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  url = "AJAX/AJAX.czhenq?as=" + AssemblyName + "&me=" + MethodName +"&ar="+ args;
  xmlhttp.open("POST",url,false);
  xmlhttp.send();
  alert(xmlhttp.responseText);
}


  3.一個簡單的AJAX框架已經實現。現在寫段代碼來測試.

  使用自己的AJAX:

  1.新建一個網站,并應用剛才你編寫的HttpHandler。并在網站的Web.config中注冊你的HttpHandler,說明那些請求將使用你編寫的Handler來處理。下面的內容說明:所有以"czq"結尾的請求,都將使用"Czhenq.HttpHandlerFactory"來處理。

<httpHandlers>
<add verb="POST,GET" path="*.czq" type="Czhenq.HttpHandlerFactory,
Czhenq.AJAX"/>
</httpHandlers>

  2.添加一個web頁面,將剛才的腳本拷貝到頁面中,并添加一個你要調用的方法。

private string Add(int i, int j)
{
 return TextBox1.Text;
}

  3.在頁面中放置一個HiddenField控件,命名為AssemblyName。 并在Page_Load中添加如下代碼:

string assemblyName = Czhenq.AJAX.Class1.Encode(typeof(_Default).AssemblyQualifiedName);
AssemblyName.Value = assemblyName;

  4.頁面中添加如下腳本:

var assemblyName = document.getElementById("AssemblyName");
var argus = new Array();
argus.push("100");
argus.push("200");
CallMethod(assemblyName,"Add",argus);

  總結:

  AJAX并不是一種新的技術,它只是一些已有技術的有機結合.我們可以將AJAX簡單的理解為:AjAx是對JavaScript調用XmlHttp的封裝.它改變的是代碼書寫方式.

   Encode 與 Dencode實現:

public static string Encode(string value)
{
 byte[] bytes = ASCIIEncoding.ASCII.GetBytes(value);
 return Convert.ToBase64String(bytes);
}
public static string Dencode(string value)
{
 byte[] bytes = Convert.FromBase64String(value);
 return ASCIIEncoding.ASCII.GetString(bytes);
}
作者:陳振泉 來源:天極網

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情亚洲另类| 国产精品私拍pans大尺度在线| 久久久精品久久久久| 韩剧1988在线观看免费完整版| 亚洲人成网7777777国产| 国产亚洲免费的视频看| 亚洲三级av在线| 海角国产乱辈乱精品视频| 激情久久av一区av二区av三区| 亚洲精品久久久久久久久久久久久| 亚洲国产日韩精品在线| 亚洲欧美综合区自拍另类| 亚洲无限乱码一二三四麻| 中文日韩在线观看| 亚洲欧美精品中文字幕在线| 久久久久久国产三级电影| 成人黄色网免费| 亚洲韩国日本中文字幕| 欧美日韩一区二区在线| 欧美精品日韩www.p站| 国产精品青青在线观看爽香蕉| 日韩精品免费视频| 国产精品久久久久久久久久久不卡| 久久人人爽人人爽爽久久| 亚洲人成网站999久久久综合| 91精品国产91久久久久久最新| 亚洲二区中文字幕| 中文字幕精品久久久久| 欧美成人午夜影院| 欧美国产第一页| 国产精品成人va在线观看| 国产精品91久久久久久| 97视频在线观看免费高清完整版在线观看| 国产在线视频91| 成人有码在线播放| 国产精品露脸av在线| 1769国内精品视频在线播放| 日韩亚洲第一页| 欧美性猛交xxxx黑人| 欧美大片网站在线观看| 亚洲国内高清视频| 91超碰中文字幕久久精品| 亚洲字幕一区二区| 国产成人精品在线播放| 国产精品一区二区在线| 神马久久久久久| 亚洲国产精品小视频| 丝袜一区二区三区| 亚洲情综合五月天| 茄子视频成人在线| 亚洲激情免费观看| 亚洲第一av在线| 精品一区二区亚洲| 欧美日韩国产激情| 青青在线视频一区二区三区| 久久精品国产视频| 在线观看欧美视频| 欧美在线视频一二三| 欧美华人在线视频| 日韩中文字幕在线| 麻豆成人在线看| 日日狠狠久久偷偷四色综合免费| 久久97久久97精品免视看| 日韩高清免费观看| 一区二区在线免费视频| 欧美黄网免费在线观看| 日韩在线观看电影| 亚洲欧美综合区自拍另类| 欧美电影电视剧在线观看| 色婷婷av一区二区三区久久| 国产精品电影网站| 精品国产老师黑色丝袜高跟鞋| 91久久精品久久国产性色也91| 成人国产精品日本在线| 国产精品揄拍500视频| 国产精品成人久久久久| 96精品久久久久中文字幕| 欧美精品做受xxx性少妇| 精品国产乱码久久久久久天美| 97免费视频在线| 91九色精品视频| 欧美成人午夜免费视在线看片| 亚洲成年人影院在线| 伊人久久大香线蕉av一区二区| 久久中文精品视频| 欧美成人一区在线| 97久久久免费福利网址| 国产精品成av人在线视午夜片| 国产精品视频白浆免费视频| 久久成人国产精品| 欧美国产极速在线| 国产精品免费小视频| 日韩欧美在线视频免费观看| 亚洲午夜av久久乱码| 97国产在线观看| 欧美成人精品在线视频| 亚洲美女www午夜| 成人免费网站在线观看| 日韩精品亚洲元码| 青青a在线精品免费观看| 97国产成人精品视频| 国产日韩在线视频| 欧美成人午夜剧场免费观看| 92看片淫黄大片欧美看国产片| 精品久久久久久亚洲国产300| 777午夜精品福利在线观看| 亚洲网站在线看| 亚洲欧美日韩区| 91干在线观看| 91啪国产在线| 一本色道久久综合狠狠躁篇的优点| 欧美激情亚洲国产| 亚洲高清久久久久久| 亚洲精品国产精品国自产在线| 久久人人爽人人| 中文字幕欧美日韩精品| 欧洲美女7788成人免费视频| 91亚洲精华国产精华| 国内精品视频在线| 日本精品久久久久影院| 国产999精品视频| 亚洲欧美自拍一区| 亚洲精品wwwww| 亚洲天堂视频在线观看| 久久影视免费观看| 日韩中文在线中文网三级| 日本精品一区二区三区在线| 日韩亚洲综合在线| 亚洲毛片一区二区| 91高清视频免费观看| 欧美丰满片xxx777| 国产欧美 在线欧美| 欧美激情a∨在线视频播放| 欧美国产精品va在线观看| 久久久久久久久久国产| 美女av一区二区| 成人a免费视频| 亚洲人成77777在线观看网| 精品国产一区二区三区久久狼5月| 欧美激情一区二区三区成人| 国产精品丝袜久久久久久高清| 亚洲丁香久久久| 欧美一级电影在线| 国产精品欧美一区二区| 97视频在线观看亚洲| 一本大道香蕉久在线播放29| 国产69精品久久久久9999| 揄拍成人国产精品视频| 超碰日本道色综合久久综合| 久久久噜噜噜久久久| 伊人久久大香线蕉av一区二区| 欧美黑人巨大精品一区二区| 亚洲人午夜精品| 国产精品情侣自拍| 久久夜精品va视频免费观看| 日产精品久久久一区二区福利| 91国语精品自产拍在线观看性色| 亚洲精品欧美日韩| 国产精品96久久久久久| 久久理论片午夜琪琪电影网| 欧美另类极品videosbest最新版本| 国产一区二区日韩精品欧美精品| 丰满岳妇乱一区二区三区| 精品欧美aⅴ在线网站|