C#中的ajax使用

最近公司有個非常着急的項目,後臺使用C#寫的.

在這個項目中,我負責前臺頁面顯示及數據的交互.避免不了需要處理一些c#的代碼.有些地方記錄下來,方便以後使用.

ajax

$.ajax({
    //提交數據的類型 POST GET 
    type: "POST",
    //提交的網址
    url: "../ajax/infraredVideo.ashx", 
    dataType: "json",
    data: {},
    async: true,
    //成功返回之後調用的函數
    success: function (data) {

    }
})

前端要注意的地方是"url"的那個屬性. 在javaWeb項目中,這裏寫的是接口路徑

在c#項目中,這裏是文件名.在VS2010中, 新建項→一般處理程序

後臺代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using webVideoModual.Entity;
using System.Text;
using System.Data;
using Maticsoft.DBUtility;
using System.Web.Script.Serialization;
using Npgsql;

namespace webVideoModual.ajax
{
    /// <summary>
    /// selectInfraredVideoAlarmByDateTime 的摘要說明
    /// </summary>
    public class selectInfraredVideoAlarmByDateTime : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {

            int page;
            int.TryParse(context.Request.Params["page"], out page);
            int limit;
            int.TryParse(context.Request.Params["limit"], out limit);


            string startDateTime = context.Request.Params["startDateTime"];

            string endDateTime = context.Request.Params["endDateTime"];

            JavaScriptSerializer jss = new JavaScriptSerializer();
            List<Alarm> list = getAlarmListByPage(page, limit, startDateTime,endDateTime);
            string jsonArr = jss.Serialize(list);

            context.Response.Write("{\"code\": 0 ,\"msg\":\"\",\"count\":" + getAlarmListCount(startDateTime, endDateTime) + ",\"data\":" + jsonArr + "}");
                       
        }
        
        public long getAlarmListCount(string startDateTime, string endDateTime)
        {

            StringBuilder strSql = new StringBuilder();


            strSql.Append("SELECT COUNT(id) FROM dn_infrared_alarm");


            strSql.Append(" WHERE ");
            if (!string.Equals(startDateTime, ""))
            {
                strSql.Append(" \"alarmDateTime\" >= '" + startDateTime +"'");
                if (!string.Equals(endDateTime, ""))
                {
                    strSql.Append(" AND ");
                    strSql.Append(" \"alarmDateTime\" <= '" + endDateTime + "'");
                }
            }
            else
            {
                if (!string.Equals(endDateTime, ""))
                {
                    strSql.Append(" \"alarmDateTime\" <= '" + endDateTime + "'");
                }
                else
                {
                    strSql.Append("1 = 1");
                }
            }

            DataSet ds = DbHelperSQL.Query(strSql.ToString());

            long i = (long)ds.Tables[0].Rows[0]["count"];


            return i;


        }


        public List<Alarm> getAlarmListByPage(int page, int limit ,string startDateTime, string endDateTime)
        {

            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM dn_infrared_alarm  ");

          
            strSql.Append(" WHERE ");
            if (!string.Equals(startDateTime, ""))
            {
                strSql.Append(" \"alarmDateTime\" >= '" + startDateTime + "'");
                if (!string.Equals(endDateTime, ""))
                {
                    strSql.Append(" AND ");
                    strSql.Append(" \"alarmDateTime\" <= '" + endDateTime + "'");
                }
            }
            else {
                if (!string.Equals(endDateTime, ""))
                {
                  strSql.Append(" \"alarmDateTime\" <= '"+ endDateTime+ "'");
                }
                else
                {
                    strSql.Append("1 = 1");
                }
            }

            strSql.Append(" ORDER BY id DESC limit " + limit + " offset " + (page - 1) * limit);
            
            DataSet ds = DbHelperSQL.Query(strSql.ToString());

            List<Alarm> alarmList = new List<Alarm>();

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                Alarm alarm = new Alarm();
                alarm.id = (int)ds.Tables[0].Rows[i]["id"];
                alarm.alarmActualTemp = ds.Tables[0].Rows[i]["alarmActualTemp"] + "";
                alarm.alarmDateTime = ds.Tables[0].Rows[i]["alarmDateTime"] + "";
                alarm.alarmType = ds.Tables[0].Rows[i]["alarmType"] + "";
                alarm.alarmPictureUrl = ds.Tables[0].Rows[i]["alarmPictureUrl"] + "";
                alarm.alarmLevel = ds.Tables[0].Rows[i]["alarmLevel"] + "";
                alarm.alarmPersetTemp = ds.Tables[0].Rows[i]["alarmPersetTemp"] + "";

                alarmList.Add(alarm);
            }
            return alarmList;



        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

上面就是後臺代碼, 第一部分代碼塊最爲關鍵.

 public void ProcessRequest(HttpContext context)
        {

            int page;
            int.TryParse(context.Request.Params["page"], out page);
            int limit;
            int.TryParse(context.Request.Params["limit"], out limit);

            //可以接到前面傳來的參數
            string startDateTime = context.Request.Params["startDateTime"];

            string endDateTime = context.Request.Params["endDateTime"];

            JavaScriptSerializer jss = new JavaScriptSerializer();
            List<Alarm> list = getAlarmListByPage(page, limit, startDateTime,endDateTime);
            string jsonArr = jss.Serialize(list);

            //往回返JSON數據
            context.Response.Write("{\"code\": 0 ,\"msg\":\"\",\"count\":" + getAlarmListCount(startDateTime, endDateTime) + ",\"data\":" + jsonArr + "}");
                       
        }

就這樣, 數據交互就完整了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章