成都网站建设
|
域名注册
|
虚拟主机
|
网站制作
|
网站案例
|
网站优化
|
网站推广
|
企业邮局
|
服务器租用
|
广告设计
首页
域名注册
虚拟主机
网站建设
服务器租用
营销推广
网站程序
前端开发
移动互联网
企业邮箱
广告设计
|
成都VI设计
|
画册设计制作
|
成都包装设计
|
网页设计
|
成都虚拟主机
|
网站建设
|
营销型网站建设
前端开发
html
div+css
css
jQuery
JavaScript教程
ajax教程
XML教程
json教程
bootstrap教程
域名注册
英文域名
中文域名
域名转入\转出
通用网址
无线网址
虚拟主机
主机购买
数据库
主机管理
FTP上传
主机续费升级
网站建设
网站策划
网站方案
网页设计
网站制作
网站改版
服务器租用
web服务器
FTP服务器
服务器租用
服务器托管
云主机服务器
营销推广
seo优化
网站推广
搜索引擎
免费资源
网站程序
vb编程
asp程序
php程序
asp.net程序
C#程序
移动互联网
wap手机网站
app应用开发
微网站
企业邮箱
企业邮箱优势
企业邮箱设置
邮箱收发问题
邮箱功能讲解
邮箱其他问题
网站备案
备案流程指南
备案资料下载
备案常见问题
各省备案要求
当前位置:
创新互联
>>
常见问题
>>
前端开发
>>
ajax教程
>>
ASP.NET基本AJAX框架
ASP.NET基本AJAX框架
作者:创新互联 文章来源:前端开发部 点击数:
更新时间:2008-08-24
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:
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
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"来处理。
type="Czhenq.HttpHandlerFactory, Czhenq.AJAX"/>
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);
}
如何将AJAX的返回值赋给变量
:上一篇
用Ajax为SOA增光添彩
:下一篇
ajax教程相关文章
如何将AJAX的返回值赋给变量
Ajax,未来的WebServi...
用Javascript实现鼠标拖...
什么是Ajax技术?
Ajax 解决ie缓存问题
谈谈AJAX的安全性及AJAX安...
ajax强制不缓存的方法
使用PHP和AJAX创建RSS聚...
创新互联专业网站设计制作、网站建设、UI设计、网页设计。欢迎咨询028-86922220
网站备案
|
企业邮箱
|
移动互联网
|
前端开发
|
网站程序
|
营销推广
|
服务器租用
|
网站建设
|
虚拟主机
|
域名注册
|
热门搜索
服务电话:028-86922220 13518219792 公司地址:成都市太升南路288号锦天国际A幢10楼2号
企业邮箱:
service@cdxwcx.com
版权所有:成都创新互联科技有限公司 蜀ICP备09010846号
成都网站建设