AJAX俺也不會,是真的,不過,以後就會了,因為俺要學習了,呵呵,先把下面的文章收藏起來:
Ajax研究小結 ((作者:李天平 轉載請註明))
轉自:http://www.cnblogs.com/ltp/archive/2005/12/03/289725.html
Ajax最近可謂是流行加火熱,為web開發中的重新整理問題帶來了新的生機與希望。雖然這項技術在很久以前就有人在用,無非是XMLHttpRequest JavaScript的幾項技術按一定的方式組合,也算不得什麼新技術,但掛了一個名,做了一個封裝,還是為不少開發人員提供了很多便捷。因此,我也抽出時間來研究了一下,並且應用到當前的項目裡,同時做個小結放在這裡。
具體使用:
1. 在項目中添加引用Ajax.dll (我用的版本是5.7.22.2)
2. 修改web.config,在裡面增加
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
<system.web>
</configuration>
3. 建立一個實現商務邏輯的類,並在裡面增加方法,在方法上面加上[Ajax.AjaxMethod()]。如:
/// <summary>
/// 商務邏輯的類
/// </summary>
public class AjaxBLLClass
{
public AjaxBLLClass()
{
}
[Ajax.AjaxMethod()]
public string GetPlaceList(int ClassID)
{
Advertisement.BLL.ADManage.AdPlace adplace=new Advertisement.BLL.ADManage.AdPlace();
DataSet ds=adplace.GetListByClass(ClassID);
string str="";
for(int m=0;m<ds.Tables[0].Rows.Count;m++)
{
str+=","+ds.Tables[0].Rows[m]["PlaceID"].ToString()+"|"+ds.Tables[0].Rows[m]["PlaceName"].ToString();
}
str=str.Substring(1,str.Length-1);
return str;
}
4. 在調用頁的.cs的Page_Load事件中增加一行類註冊代碼
private void Page_Load(object sender, System.EventArgs e)
{
//註冊類獲得有效方法
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxBLLClass));
}
注意:typeof(AjaxBLLClass)中,AjaxBLLClass是要包含要調用方法的類,即上面第3步建立的商務邏輯類AjaxBLLClass
5. 在調用頁分頁檔中或者單獨寫一個js檔案,用Javascript代碼調用商務邏輯的類的方法。如:
function classResult()
{
var classid=document.getElementById("DropClassID");
AjaxBLLClass.GetPlaceList(classid.value,get_class_Result_CallBack);//調用商務邏輯類方法
}
function get_class_Result_CallBack(response)
{
if (response.value != null)
{
document.getElementById("DropPlaceID").length=0;
var piArray = response.value.split(",");
for(var i=0;i<piArray.length;i++)
{
var ary1 = piArray[i].toString().split("|");
document.getElementById("DropPlaceID").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
}
}
return
}
6. 調用
<asp:dropdownlist id="DropClassID" runat="server" Width="250px" onchange=” classResult()”></asp:dropdownlist>
註:如果是低版本的Ajax需修改Global.asax的Application_Start事件,設定Ajax的HandlerPath :
protected void Application_Start(Object sender, EventArgs e)
{
//Ajax.Utility.HandlerPath = "ajax";//老版本的需要
}
使用感受:個人認為雖然它從一定程度上解決了頁面的重新整理問題,但卻需要寫大量的指令碼代碼,並且和.net的控制項和類庫結合還不是很好,還不適合在項目裡大量地使用,在一些對重新整理要求不是太高的地方還是用ASP.NET的編碼方式好一些。
範例程式碼下載
附上一些Ajax資源:
http://ajax.schwarz-interactive.de
http://weblogs.asp.net/mschwarz/
http://groups.google.com/group/ajaxpro?lnk=li
MSDN上的Atlas 網站
ASP.NET "Atlas" 官方網站
ASP.NET "Atlas" 預覽文檔
Atlas 快速入門教程