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 + "}");
                       
        }

就这样, 数据交互就完整了

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