最近公司有個非常着急的項目,後臺使用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 + "}");
}
就這樣, 數據交互就完整了