相信AJAX这个技术的前景是光明的。先贴出它在.NET1.1下的应用的一个实例供大家一起探讨
这里我们使用了AJAX.NET这个免费的dll库(太感谢Michael Schwarz了,给予12分的谢意)。
步骤如下:
一:添加Ajax.dll引用
我们首先需要把Ajax.dll库引用进项目。
二:设置HttpHandler
在Web.config下设置HttpHandler。我们需要在<configuration>/<system.web>下添加<httpHandlers>。具体代码如下:
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
.
</system.web>
</configuration>
三:设置页面属性
下面两种方法你可以任选一种:
1. 在Page_Load事件中,注册AJAX
我们需要在Page_Load事件中,为需要通过JS访问其函数的类进行注册。具体代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(noFlash));
Ajax.Utility.RegisterTypeForAjax(typeof(User));
// 在此处放置用户代码以初始化页面
}其中,noFlash和User都是这个页面下的类名。
2.在页面中添加<script>,注册AJAX
这里,我们需要在它的<head>下添加下列代码:
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript" src="ajax/NoFlash.noFlash,NoFlash.ashx"></script>
<script language="javascript" src="ajax/NoFlash.User,NoFlash.ashx"></script>其中,NoFlash为此页面的命名空间,noFlash和User为这个页面中的类名。如果此类的函数会被JS调用,就必须注册它。
个人推荐使用第一种方法。
四:添加服务器端函数
添加用于客户端调用的服务器端函数。这里,这些函数和平常的C#中的函数书写一模一样,但我们需要在函数前加[Ajax.AjaxMethod()]特性来表明它将可以被客户端JS调用。下面是一个简单的例子:
[Ajax.AjaxMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}这样,在运行的时候,系统会自动在调用的这个页面的客户端产生一个ServerSideAdd的JS函数,它接收两个int型的参数。当客户端调用这个JS函数的时候,服务器端的ServerSideAdd函数将被调用,并返回相应的结果。
需要注意的是:如果是整个类作为返回的对象,要在定义这个返回类的头部加[Serializable()]特性。如:
[Serializable()]
public class User
{
private int _userId;
private string _firstName;
private string _lastName;

public int userId
{
get { return _userId; }
}
public string FirstName
{
get { return _firstName; }
}
public string LastName
{
get { return _lastName; }
}

public User(int _userId, string _firstName, string _lastName)
{
this._userId = _userId;
this._firstName = _firstName;
this._lastName = _lastName;
}
public User(){}

[Ajax.AjaxMethod()]
public static User GetUser(int userId)
{
//Replace this with a DB hit or something :)
return new User(userId,"Michael", "Schwarz");
}
}
五:使用JS,调用服务器端函数
在前面这些准备工作都做好后,即可以在JS里书写调用的函数了。具体的调用方法有两种(拿ServerSideAdd举例):
1.我们可以直接调用如<name of class>.<name of server side function>,这里就是noFlash.ServerSideAdd(100,99)。
2.添加一个处理返回值的函数,这里就是noFlash.ServerSideAdd(100,99,ServerSideAdd_CallBack)。其中,ServerSideAdd_CallBack就是用来处理服务器端运行ServerSideAdd后返回的值的函数。具体的代码如:
<script language="javascript">
noFlash.ServerSideAdd(100,99,ServerSideAdd_CallBack);

function ServerSideAdd_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}
alert(response.value);
}
</script>
这样,我们就可以在.NET1.1下实现AJAX了。个人感觉这样做出的无刷新页面实在是棒。AJAX肯定会有很光明的前景
附上我写的实现代码,供大家探讨
/Files/sharemeteor/NoFlash.rar
这里我们使用了AJAX.NET这个免费的dll库(太感谢Michael Schwarz了,给予12分的谢意)。
步骤如下:
一:添加Ajax.dll引用
我们首先需要把Ajax.dll库引用进项目。
二:设置HttpHandler
在Web.config下设置HttpHandler。我们需要在<configuration>/<system.web>下添加<httpHandlers>。具体代码如下:
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
.
</system.web>
</configuration> 三:设置页面属性
下面两种方法你可以任选一种:
1. 在Page_Load事件中,注册AJAX
我们需要在Page_Load事件中,为需要通过JS访问其函数的类进行注册。具体代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(noFlash));
Ajax.Utility.RegisterTypeForAjax(typeof(User));
// 在此处放置用户代码以初始化页面
}2.在页面中添加<script>,注册AJAX
这里,我们需要在它的<head>下添加下列代码:
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript" src="ajax/NoFlash.noFlash,NoFlash.ashx"></script>
<script language="javascript" src="ajax/NoFlash.User,NoFlash.ashx"></script>个人推荐使用第一种方法。
四:添加服务器端函数
添加用于客户端调用的服务器端函数。这里,这些函数和平常的C#中的函数书写一模一样,但我们需要在函数前加[Ajax.AjaxMethod()]特性来表明它将可以被客户端JS调用。下面是一个简单的例子:
[Ajax.AjaxMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}需要注意的是:如果是整个类作为返回的对象,要在定义这个返回类的头部加[Serializable()]特性。如:
[Serializable()]
public class User
{
private int _userId;
private string _firstName;
private string _lastName;
public int userId
{
get { return _userId; }
}
public string FirstName
{
get { return _firstName; }
}
public string LastName
{
get { return _lastName; }
}
public User(int _userId, string _firstName, string _lastName)
{
this._userId = _userId;
this._firstName = _firstName;
this._lastName = _lastName;
}
public User(){}
[Ajax.AjaxMethod()]
public static User GetUser(int userId)
{
//Replace this with a DB hit or something :)
return new User(userId,"Michael", "Schwarz");
}
}五:使用JS,调用服务器端函数
在前面这些准备工作都做好后,即可以在JS里书写调用的函数了。具体的调用方法有两种(拿ServerSideAdd举例):
1.我们可以直接调用如<name of class>.<name of server side function>,这里就是noFlash.ServerSideAdd(100,99)。
2.添加一个处理返回值的函数,这里就是noFlash.ServerSideAdd(100,99,ServerSideAdd_CallBack)。其中,ServerSideAdd_CallBack就是用来处理服务器端运行ServerSideAdd后返回的值的函数。具体的代码如:
<script language="javascript">
noFlash.ServerSideAdd(100,99,ServerSideAdd_CallBack);
function ServerSideAdd_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}
alert(response.value);
}
</script>这样,我们就可以在.NET1.1下实现AJAX了。个人感觉这样做出的无刷新页面实在是棒。AJAX肯定会有很光明的前景
附上我写的实现代码,供大家探讨
/Files/sharemeteor/NoFlash.rar
浙公网安备 33010602011771号