ajax
最近听说了AJAX技术的问世,让用B/S开发的应用程序有了新的用户观感 (好奇!)!于是特地去了新华书店看了看这方面的书,虽然2005刚刚提出的一个新词汇----AJAX,但这方面的书还挺多,这就是IT,总是迅雷不及眼耳!这就是IT人,总要不断的学习!看了看这方面的书,感觉真的不错,于是,回来就在自己的机子上搞了一个小小的例子,与有兴趣者分享一下!
不扯那么远了,Ajax定义为“Asynchronous JavaScript + XML”的简称,也就是异步的JavaScript和XML处理。从原理上看,主要是Ajax可以通过调用HttpRequest实现与服务器的异步通讯,并最终在网页中实现丰富友好的用户界面.不错,异步通讯--关键之所在!当然对JavaScript也应有一定的功底!我个人认为它是程序设计中的一个经典之处!
由于Ajax技术是在客户端(浏览器)与服务器之间加了一个称之为AJAX引擎的功能,才得以实现异步!所以它需要引用一个叫Ajax.dll的文件,可以去网上将它下载下来.然后把Ajax.dll copy到应用系统bin目录下,然后在工程引用中引用Ajax.dll.
OK, 现在我们开始写了,
一. 首先要在web.config中添加如一段话:
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
.net 2005版的就不用这一步了.
意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。
二、这时我在项目里新建二个页面AjaxForm1.aspx、AjaxMothed.aspx;
其中AjaxForm1.aspx的前台的设计很简练,其中包括必要的JavaScript语句,代码如下:
<% Page Language="C#" AutoEventWireup="true"
CodeFile="AjaxForm1.aspx.cs" Inherits="MyDemo.AjaxForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="获得服务器时间"
/>
<input id="Text1" type="text" />
<input id="Text2" type="text" />
<input id="Button2" type="button" value="得到两个文本框的和
" />
</div></form>
<script type="text/javascript">
function getServerTime()
{
//MyDemo.AjaxMothed.GetServerTime()得到从服务器传来的数据是object,要写.value
alert(MyDemo.AjaxMothed.GetServerTime().value);
}
function add(a,b)
{
//把文本框的值转换成int
var a1 = parseInt(a);
var b1 = parseInt(b);
//第1、2参数为服务器方法所需要的参数,后面一个是如果服务器返回数据
//客户端要处理这些数据的js函数名,他有个参数就是从服务器传来的数据
MyDemo.AjaxMothed.AddTwo(a1,b1,getAdd);
}
function getAdd(rel)
{
//要加上.value
alert(rel.value);
}
</script>
</body>
</html>
后台AjaxForm1.aspx.cs代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MyDemo
{
public partial class AjaxForm1: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxForm1));
//这句话是必要的,他是把AjaxMothed页面作为对象,以让AjaxForm1的前台访问
//AjaxMothed的后台函数,达到利用javascript 操作后台的目的!
}
}}
三、AjaxMethod.aspx.cs里的方法为:
[AjaxPro.AjaxMethod]//每个函数前都必须有这个引用。
public DateTime GetServerTime()
{
return DateTime.Now;
}
[AjaxPro.AjaxMethod]
public int AddTwo(int firstInt, int secondInt)
{
return firstInt + secondInt;
}
这样代码我们就设计完了,此时前台就可神不知鬼不觉的访问后台,后台在将处理后的数据返回给
前台,达到不刷新整个页面的目的!