======使用Ajax步骤======
1、Web.config,在System.web下面添加HttpHandlers节,Web.Config看起来是这样的:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="Ajax" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</handlers>
</system.webServer>
</configuration>
红色一段为必须,蓝色一段仅在Win7下架设的IIS服务器管用,是否该加上,我等尚未找出确然的规律。
对一个项目来说,只需要添加一次。
2、引用Ajax.dll
3、编写一个Ajax处理类,如CaoPanAjax
4、在方法前加上红色一段代码
/// <summary>
/// 有时候Ajax突然不工作了,特意写个简单方法来测试
/// </summary>
/// <param name="who"></param>
/// <returns></returns>
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string hi(string who)
{
return "hi," + who + "!";
}
5、编写方法,返回string最佳,因为最容易阅读,同时Ajax方法应当遵循“属性是属性,函数是函数,绝不互相引用”的原则,假设需要引用什么属性了,一律用参数----入参代替,为什么这样呢,因为一个模块----“前台”,自我维持变量的值更好,它可以请求存储,但只是存储而已,最好不要跟其他相关,另外,这样写出的代码,每个函数都是可以独立移植的,可移植性为最佳。
6、调用方法,在aspx的前台调用,默认生成的<head runat="server">以及<form id="form1" runat="server">不能删,否则提示“找不到对应的类”;
7、部署,只发现Win7上部署,有时需要上面蓝色一段代码,有时又不需要(多了还不行),具体关联,我等尚未参透。
======Aspx页面工作流======
①该类的窗体级初始化代码
②Page_Load
③ !IsPostBack
④ A
⑤Server方法
⑥Ajax方法
------------------------------------------
初始化 Server方法 呼叫Ajax 呼叫独立Ajax
① ① ① ①
② ② ⑥ ⑥
③ ⑤
④
------------------------------------------
这个顺序证明:
1、执行任意方法都是经过初始化的① ,所以“全局变量”的值是一定是“初始值”。
2、一般的Server方法肯定会执行Page_Load方法,同时是否第一次可以用IsPostBack区分,这个属性的意思是回发,所以第一次写成 if (!IsPostBack),就是A的位置。
3、任何在Page_Load中的代码,在Ajax调用过程中,都不被执行,所以影响Ajax调用的代码,只能写在用Ajax声明的方法体中。
补充:Ajax有Ajax.dll和AjaxPro版本,从易用来说,还是Ajax.dll更容易。
有空的话,我会给写个Demo程序。
问题是答案的引导者,欢迎提问。