泛型處理常式(ASHX)搭配jQuery實做AJAX

一般在網路提到泛型處理常式上找到的文章大多都是用來處理動態輸出圖片
cloudio本身就比較喜歡把泛型用來做AJAX後面的那支處理程式

一般在網路提到泛型處理常式上找到的文章大多都是用來處理動態輸出圖片

cloudio本身就比較喜歡把泛型用來做AJAX後面的那支處理程式

原因之一是cloudio通常是用Code Behind也就是如果我要使用AJAX做一支非同步處理資料的程式的話

一次就要新增2支檔案一支.aspx另一支.cs或vb

這樣最後會造成web資料夾很多程式

而且很明顯.aspx是不一定需要的除非你不使用Code Beside

因為處理的程式通常在背後運作所以通常並不需要UI

 

所以通常cloudio會在呼叫ashx的頁面使用jQuery類似這樣寫

 

$("#button").bind("click",GetEmpData);
function GetEmpData(){
    var postPage = "GetEmpData.ashx";
    $.ajax({
        type:"POST",
        url:postPage,
        success:function(response){
            $("#empData").html(response);
        }
    })
}

在這邊的empData只是一個div拿來放資料用的

在後面運作的ashx這樣寫

cldOcsb.DataSource = HttpContext.Current.Server.MapPath("~/App_Data/foodmart.mdb");
cldOcsb.Provider = "Microsoft.Jet.OLEDB.4.0";
using (OleDbConnection cldConn = new OleDbConnection(cldOcsb.ConnectionString))
{
    cldConn.Open();
    if (cldConn == ConnectionState.Open)
    {
        OleDbCommand cldCmd = new OleDbCommand("SELECT top 1 employee_id, full_name, first_name, last_name FROM employee", cldConn);
        DataTable cldTb = new DataTable();
        OleDbDataReader cldRD = cldCmd.ExecuteReader(CommandBehavior.SingleRow);
        if (cldRD.HasRows)
        {
            cldRD.Read();
            Response.Write("<table><tr>");
            Response.Write("<td>" + cldRD[0].ToString() + "</td><td>" + cldRD[1].ToString() + "</td><td>" + cldRD[2].ToString() + "</td>");
            Response.Write("</tr></table>");
        }
    }
}

簡簡單單的就可以利用jQuery與ashx非同步的作資料的處理了

 

另外使用ashx還有一個原因就是ashx預設是不會把本身當作html輸出的

當你使用aspx來做這樣的功能的話就需要自己適當的調整一下程式囉^^

ashx參考此文章http://msdn.microsoft.com/zh-tw/library/bb398986.aspx