使用ajax获取接口数据,后端使用c#将数据保存到数据库
1、前端获取token传到后端
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetDeviceInfo.aspx.cs" Inherits="GetDeviceInfo" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>GetDeviceInfo</title> <script src="js/jquery-3.3.1.js"></script> <script src="js/jquery-3.3.1.min.js"></script> </head> <body> </body> <script type="text/javascript"> var token = ""; //获取到token的值保存到数据库(进入页面就执行) $(document).ready(function() { $.ajax({ type: "GET", async: false, data: {}, url: "xxx", dataType: "json", success: function (ret) { token = ret.access_token $.ajax({ type: "GET", async: false, data: {token:token,method:'savetoken' }, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { }, error: function (t) { alert(t.data); } }) } }) }); //获取(19台)当前设备信息数据保存到数据库 $(document).ready(function() { var t; var tokens; var sysid; var urls = "https://receive.symacnc.cn/v20/Dept/getDeptDeviceInfo?grant_type="; $.ajax({ type: "GET", async: false, data:{method:'querytoken'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { tokens = ret.token; sysid = ret.sysids; for (var i = 0; i < sysid.length; i++) { sid = sysid[i].sysid; $.ajax({ type: "GET", async: false, data: { "sysid": sid }, url: "" + urls + tokens + "", dataType: "json", success: function (ret) { var a_data = {}; a_data["msg"] = ret.msg; a_data["code"] = ret.code; a_data["date"] = ret.date; a_data["systemtime"] = ret.systemtime; a_data["setinterval"] = ret.setinterval; a_data["gjstlastminutes"] = ret.gjstlastminutes; a_data["endtime"] = ret.endtime; var data = ret.data; a_data["sysid"] = data.sysid; a_data["name"] = data.name; a_data["duration_name"] = data.duration_name; a_data["duration"] = data.duration; a_data["warning_name"] = data.warning_name; a_data["warning"] = data.warning; a_data["companyid"] = data.companyid; a_data["companyname"] = data.companyname; a_data["deptid"] = data.deptid; a_data["deptname"] = data.deptname; a_data["device_type"] = data.device_type; a_data["cmodel"] = data.cmodel; a_data["cname"] = data.cname; a_data["dmodel"] = data.dmodel; a_data["dname"] = data.dname; a_data["quitesysid"] = data.quitesysid; a_data["worknumcol"] = data.worknumcol; a_data["repstatu"] = data.repstatu; a_data["repstatuname"] = data.repstatuname; a_data["workstatucol"] = data.workstatucol; a_data["workalarmcol"] = data.workalarmcol; a_data["params_list"] = data.params_list; t = a_data; //将数组解析为json格式传入后台 deviceinfo = JSON.stringify(t); $.ajax({ type: "GET", async: false, data: { deviceinfo: deviceinfo, method:'savedeviceinfo'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { if (i == 18) { } } }) } }) } } }) }); //获取到历史设备信息(19台) $(document).ready(function() { var t; var tokens; var sysid; var urls = ""; $.ajax({ type: "GET", async: false, data:{method:'querytoken'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { tokens = ret.token; sysid = ret.sysids; for (var i = 0; i < sysid.length; i++) { sid = sysid[i].sysid; $.ajax({ type: "GET", async: false, data: { "sysid": sid }, url: "https://receive.symacnc.cn/v20/Deptdevice/getDeviceCountData_HOUR?grant_type=clientc_credential&access_token="+tokens+"", dataType: "json", success: function (ret) { var a_data = {}; a_data["sysid"] = sid; a_data["msg"] = ret.msg; a_data["code"] = ret.code; var data = ret.data; a_data["stime"] = data.stime; a_data["etime"] = data.etime; a_data["s1"] = data.s1; a_data["f1"] = data.f1; a_data["l1"] = data.l1; a_data["t1"] = data.t1; a_data["sn"] = data.sn; a_data["op"] = data.op; a_data["rs"] = data.rs; a_data["pn"] = data.pn; a_data["mpn"] = data.mpn; a_data["o"] = data.o; a_data["at"] = data.at; a_data["alm"] = data.alm; a_data["sr"] = data.sr; a_data["fr"] = data.fr; var statu = ret.statu; a_data["alarmstatu"] = statu.alarmstatu; a_data["runstatu"] = statu.runstatu; t = a_data; //将数组解析为json格式传入后台 deviceinfo = JSON.stringify(t); $.ajax({ type: "GET", async: false, data: { deviceinfo: deviceinfo, method:'savehistorydeviceinfo'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { if (i == 18) { } } }) } }) } } }) }); //获取在线设备信息 $(document).ready(function() { var t; var tokens; var urls = "https://receive.symacnc.cn/v20/Report/getStatuCount?grant_type=clientc_credential&access_token="; $.ajax({ type: "GET", async: false, data:{method:'querytoken'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { tokens = ret.token; $.ajax({ type: "GET", async: false, data: {}, url: "" + urls + tokens + "", dataType: "json", success: function (ret) { var a_data = {}; var data = ret.data; for (var i in data) { var a = data[i]; a_data["name"] = a.name; a_data["value"] = a.value; t = a_data; //将数组解析为json格式传入后台 var devicestate = JSON.stringify(t); $.ajax({ type: "GET", async: false, data: { devicestate: devicestate, method:'savestate'}, url: "GetDeviceInfo.ashx", dataType: "json", success: function (ret) { } }) } } }) } }) }); </script> </html>
后端获取前端存入数据库的taken
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class GetDeviceInfo : System.Web.UI.Page{ protected void doSelect(){ string sql = "select * from token"; DataSet a = YunCutDBHelper.Query(sql); Response.Write(a); } }
3、后端处理前端获取的token和数据
<%@ WebHandler Language="C#" Class="GetDeviceInfo" %> using System; using System.Web; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using System.Linq; using System.Web.UI; using System.Web.UI.WebControls; public class GetDeviceInfo : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/json"; //获取前台传过来的方法名 string methodName = context.Request["method"]; //判断方法名是否正确 if (methodName == "savetoken"){//判断是否为保存token的方法 //获取前台ajax传过来的token数据 string token = context.Request["token"]; //获得当前系统时间(字符串格式) DateTime systemTime = DateTime.Now; DataSet a = YunCutDBHelper.Query("select top 1 createtime,id from token order by id desc"); DateTime time = Convert.ToDateTime("2010-01-01 00:00:00"); int tid = 0; foreach (DataRow dr in a.Tables[0].Rows){ time= (DateTime)dr[0]; tid= (Int32)dr[1]; } //数据库时间和系统时间比较 System.TimeSpan st = systemTime.Subtract(time); //获得小时差 int timehours = (Int32)st.Hours; //获得天数差 int timedays = (Int32)st.Days; // st.Days.ToString():获取"天" // +st.Hours.ToString()获取:"小时" // +st.Minutes.ToString()获取:"分钟" // +st.Seconds.ToString()获取:"秒"; //如果时间差大于两个小时以上重新添加token if (timehours>2 || timedays>0){ if (tid!=0){ //修改token状态 string sql = "update token set state = '已失效' where id = "+tid+""; YunCutDBHelper.ExecuteSql(sql); } //插入数据库 string strSql = "insert into token(token,state,createtime)values('" + token + "','未失效','" + systemTime + "')"; YunCutDBHelper.ExecuteSql(strSql); } }else if (methodName == "querytoken"){//判断是否为查询token和sysid的方法 //查询从数据库获取到最后token指令 DataSet a = YunCutDBHelper.Query("select top 1 token from token order by id desc"); //查询获取到所有的sysid并进行循环 DataSet aa = YunCutDBHelper.Query("select sysid from device "); //遍历循环DataSet结果集 string sysidList = ""; foreach (DataRow dr in a.Tables[0].Rows){ sysidList = sysidList + "{ \"token\":\"" + dr[0].ToString() + "\",\"sysids\":["; } foreach (DataRow dr in aa.Tables[0].Rows){ sysidList = sysidList + "{ \"sysid\":\"" + dr[0].ToString() + "\"},"; } sysidList = sysidList.Substring(0, sysidList.Length - 1);//去掉最后的一个逗号 sysidList = sysidList + "]}"; context.Response.Write(sysidList.ToString()); } else if (methodName == "savedeviceinfo") {//判断是否为保存当前设备信息数据的方法 //获取前台ajax传过来的设备信息数据 string deviceinfo = context.Request["deviceinfo"]; //将前台传过来的json格式装换为String类型 JObject jo = (JObject)JsonConvert.DeserializeObject(deviceinfo); string msg = ""; if (deviceinfo.IndexOf("\"msg\":") > -1){ msg = jo["msg"].ToString(); } string code = ""; if (deviceinfo.IndexOf("\"msg\":") > -1){ code = jo["code"].ToString(); } string date = ""; if (deviceinfo.IndexOf("\"date\":") > -1){ date = jo["date"].ToString(); } string systemtime = ""; if (deviceinfo.IndexOf("\"systemtime\":") > -1){ systemtime = jo["systemtime"].ToString(); } string setinterval = ""; if (deviceinfo.IndexOf("\"setinterval\":") > -1){ setinterval = jo["setinterval"].ToString(); } string gjstlastminutes = ""; if (deviceinfo.IndexOf("\"gjstlastminutes\":") > -1){ gjstlastminutes = jo["gjstlastminutes"].ToString(); } string endtime = ""; if (deviceinfo.IndexOf("\"endtime\":") > -1){ endtime = jo["endtime"].ToString(); } string sysid = ""; if (deviceinfo.IndexOf("\"sysid\":") > -1){ sysid = jo["sysid"].ToString(); } string name = ""; if (deviceinfo.IndexOf("\"name\":") > -1){ name = jo["name"].ToString(); } //解析的设备信息 string duration_name = ""; if (deviceinfo.IndexOf("\"duration_name\":") > -1){ duration_name = jo["duration_name"].ToString(); } string duration = ""; if (deviceinfo.IndexOf("\"duration\":") > -1){ duration = jo["duration"].ToString(); } string warning_name = ""; if (deviceinfo.IndexOf("\"warning_name\":") > -1){ warning_name = jo["warning_name"].ToString(); } string warning = ""; if (deviceinfo.IndexOf("\"warning\":") > -1){ warning = jo["warning"].ToString(); } string companyid = ""; if (deviceinfo.IndexOf("\"companyid\":") > -1){ companyid = jo["companyid"].ToString(); } string companyname = ""; if (deviceinfo.IndexOf("\"companyname\":") > -1){ companyname = jo["companyname"].ToString(); } string deptid = ""; if (deviceinfo.IndexOf("\"deptid\":") > -1) { deptid = jo["deptid"].ToString(); } string deptname = ""; if (deviceinfo.IndexOf("\"deptname\":") > -1){ deptname = jo["deptname"].ToString(); } string device_type = ""; if (deviceinfo.IndexOf("\"device_type\":") > -1){ device_type = jo["device_type"].ToString(); } string cmodel = ""; if (deviceinfo.IndexOf("\"cmodel\":") > -1){ cmodel = jo["cmodel"].ToString(); } string cname = ""; if (deviceinfo.IndexOf("\"cname\":") > -1){ cname = jo["cname"].ToString(); } string dmodel = ""; if (deviceinfo.IndexOf("\"dmodel\":") > -1){ dmodel = jo["dmodel"].ToString(); } string dname = ""; if (deviceinfo.IndexOf("\"dname\":") > -1){ dname = jo["dname"].ToString(); } string quitesysid = ""; if (deviceinfo.IndexOf("\"quitesysid\":") > -1){ quitesysid = jo["quitesysid"].ToString(); } string worknumcol = ""; if (deviceinfo.IndexOf("\"worknumcol\":") > -1){ worknumcol = jo["worknumcol"].ToString(); } string repstatu = ""; if (deviceinfo.IndexOf("\"repstatu\":") > -1){ repstatu = jo["repstatu"].ToString(); } string repstatuname = ""; if (deviceinfo.IndexOf("\"repstatuname\":") > -1){ repstatuname = jo["repstatuname"].ToString(); } string workstatucol = ""; if (deviceinfo.IndexOf("\"workstatucol\":") > -1){ workstatucol = jo["workstatucol"].ToString(); } string workalarmcol = ""; if (deviceinfo.IndexOf("\"workalarmcol\":") > -1){ workalarmcol = jo["workalarmcol"].ToString(); } string params_list = ""; if (deviceinfo.IndexOf("\"params_list\":") > -1){ params_list = jo["params_list"].ToString(); } string strSql = "insert into device_info(request_state,statecode,time,systemtime,setinterval,gjstlastminutes," + "endtime,sysid,name,duration_name,duration,warning_name,warning,companyid,companyname," + "deptid,deptname,device_type,cmodel,cname,dmodel,dname,quitesysid,worknumcol,repstatu," + "repstatuname,workstatucol,workalarmcol,params_list)" + "values('" + msg + "','" + code + "','" + date + "','" + systemtime + "','" + setinterval + "','" + gjstlastminutes + "','" + endtime + "','" + sysid + "','" + name + "'" + ",'" + duration_name + "','" + duration + "','" + warning_name + "','" + warning + "','" + companyid + "','" + companyname + "','" + deptid + "','" + deptname + "','" + device_type + "'" + ",'" + cmodel + "','" + cname + "','" + dmodel + "','" + dname + "','" + quitesysid + "','" + worknumcol + "','" + repstatu + "','" + repstatuname + "','" + workstatucol + "'" + ",'" + workalarmcol + "','" + params_list + "')"; YunCutDBHelper.ExecuteSql(strSql); } else if (methodName == "savehistorydeviceinfo") {//判断是否为保存历史数据方法名 //获取前台ajax传过来的设备信息数据 string deviceinfo = context.Request["deviceinfo"]; //将前台传过来的json格式装换为String类型 JObject jo = (JObject)JsonConvert.DeserializeObject(deviceinfo); string sysid = jo["sysid"].ToString(); //将历史设备信息的时间保存到数据库 string sqlstr = "insert into history_device_info_time (code,msg,stime,etime,sysid)values('" + jo["code"].ToString() + "','" + jo["msg"].ToString() + "','" + jo["stime"].ToString() + "','" + jo["etime"].ToString() + "','" + sysid + "')"; YunCutDBHelper.ExecuteSql(sqlstr); //查询主表id int tid = (int)YunCutDBHelper.GetSingle("select top 1 id from history_device_info_time order by id desc"); string _key = ""; JToken _value = null; foreach (JToken child in jo.Children()){ var property1 = child as JProperty; _key = property1.Name.ToString(); _value = property1.Value; string sql = ""; string values = "|"; string values_ = "|"; foreach (JToken _child in _value){ var property2 = child as JProperty; values += property2.Name.ToString() + "|"; foreach (JToken child1 in values){ var property3 = _child as JProperty; values_ += property3.Name.ToString() + "|"; } } if (values_.Contains("|cvalue|")){ sql = "insert into history_device_info_parameter (name,type,value,cvalue,tid)values('" + _key + "','" + _value["type"] + "','" + _value["value"] + "','" + _value["cvalue"] + "'," + tid + ")"; YunCutDBHelper.ExecuteSql(sql); }else if (values_.Contains("|type|") && values_.Contains("|value|")){ sql = "insert into history_device_info_parameter (name,type,value,tid)values('" + _key + "','" + _value["type"] + "','" + _value["value"] + "'," + tid + ")"; YunCutDBHelper.ExecuteSql(sql); } } JObject job = (JObject)JsonConvert.DeserializeObject(jo["runstatu"].ToString()); JObject job1 = (JObject)JsonConvert.DeserializeObject(jo["alarmstatu"].ToString()); string runstatu = "runstatu"; string alarmstatu = "alarmstatu"; string sql1 = "insert into history_device_info_statu (name,ass,tss,fss,name1,ass1,tss1,fss1,tid)" + "values('" + runstatu + "','" + job["as"].ToString() + "','" + job["ts"].ToString() + "','" + job["fs"].ToString() + "','" + alarmstatu + "','" + job1["as"].ToString() + "','" + job1["ts"].ToString() + "','" + job1["fs"].ToString() + "'," + tid + ")"; YunCutDBHelper.ExecuteSql(sql1); }else if (methodName == "querydevice"){//判断是否为查询当前设备信息的方法 //查询从数据库查询当前设备信息 DataSet ds = YunCutDBHelper.Query("select top 19 d.name,s.ass,s.tss,d.time from history_device_info_statu s INNER JOIN history_device_info_time t ON t.id = s.tid INNER JOIN device_info d ON d.sysid = t.sysid order by d.id desc"); //遍历循环DataSet结果集 string sysIdList = "["; foreach (DataRow dr in ds.Tables[0].Rows){ //查询历史设备信息状态时间,计算稼动率 decimal ass = Convert.ToInt32(dr[1]); decimal tss = Convert.ToInt32(dr[2]); Decimal jdl = Math.Round((tss / ass) * 100, 1); sysIdList = sysIdList + "{ \"name\":\"" + dr[0].ToString() + "\"," + " \"jdl\":\"" + jdl + "%" + "\"," + " \"time\":\"" + dr[3].ToString() + "\"},"; } sysIdList = sysIdList.Substring(0, sysIdList.Length - 1);//去掉最后的一个逗号 sysIdList = sysIdList + "]"; context.Response.Write(sysIdList.ToString()); }else if (methodName == "querytime"){//查询设备时间信息 //查询从数据库查询当前设备历史一小时信息 DataSet ds = YunCutDBHelper.Query("select top 19 d.name,s.tss1,s.tss,s.fss,s.ass from history_device_info_statu s INNER JOIN history_device_info_time t ON t.id = s.tid INNER JOIN device_info d ON d.sysid = t.sysid order by d.id desc"); foreach (DataRow dr in ds.Tables[0].Rows){ //一小时内运行时长 decimal tss = Convert.ToInt32(dr[2]); //一小时内待机时长 decimal fss = Convert.ToInt32(dr[3]); //一小时总时长 decimal ass = Convert.ToInt32(dr[4]); //稼动率 Decimal jdl = Math.Round((tss / ass) * 100, 1); string sql = "insert into history_device_info (name,jdl,tss,fss)values('" + dr[0].ToString() + "'," + jdl + ",'" + tss + "','" + fss + "')"; YunCutDBHelper.ExecuteSql(sql); } DataSet ds1 = YunCutDBHelper.Query("select a.name,a.jdl,a.tss,a.fss from history_device_info a inner join (select top 19 id from history_device_info order by id desc) as b on b.id=a.id order by a.jdl desc"); //遍历循环DataSet结果集 string sysIdList = "["; foreach (DataRow dr in ds1.Tables[0].Rows){ sysIdList = sysIdList + "{ \"name\":\"" + dr[0].ToString() + "\"," + " \"warning\":\"" + dr[1].ToString() + "%" + "\"," + " \"tss\":\"" + dr[2].ToString() + "\"," + " \"fss\":\"" + dr[3].ToString() + "\"},"; } sysIdList = sysIdList.Substring(0, sysIdList.Length - 1);//去掉最后的一个逗号 sysIdList = sysIdList + "]"; context.Response.Write(sysIdList.ToString()); }else if (methodName == "savestate"){//判断是否为保存设备状态的方法 //获取前台ajax传过来的设备状态数据 string devicestate = context.Request["devicestate"]; JObject jo = (JObject)JsonConvert.DeserializeObject(devicestate); //获得状态名称 string name = jo["name"].ToString(); //获得状态值 string value = jo["value"].ToString(); //获得当前系统时间(字符串格式) string systemTime = DateTime.Now.ToString(); //插入数据库 string strSql = "insert into device_state(name,value,createtime)values('" + name + "','" + value + "','" + systemTime + "')"; YunCutDBHelper.ExecuteSql(strSql); }else if (methodName == "querydevicestate"){//查询设备状态信息 //查询从数据库查询当前设备状态信息 DataSet ds = YunCutDBHelper.Query("select top 3 name,value from device_state order by id desc"); //遍历循环DataSet结果集 string sysIdList = "["; foreach (DataRow dr in ds.Tables[0].Rows){ decimal v = Convert.ToInt32(dr[1]); Decimal value = Math.Round(v , 0); sysIdList = sysIdList + "{ \"name\":\"" + dr[0].ToString() + "\"," + " \"value\":\"" + value + "\"},"; } sysIdList = sysIdList.Substring(0, sysIdList.Length - 1);//去掉最后的一个逗号 sysIdList = sysIdList + "]"; context.Response.Write(sysIdList.ToString()); }else if (methodName == "queryonline"){//查询设备状态信息 //查询从数据库查询当前设备状态信息 DataSet ds = YunCutDBHelper.Query("select top 1 value from device_state where name='生产' order by id desc"); //遍历循环DataSet结果集 string sysIdList = "["; foreach (DataRow dr in ds.Tables[0].Rows){ decimal value = Convert.ToInt32(dr[0]); Decimal online = Math.Round((value / 19)*10000 , 0); string aims = "10000"; sysIdList = sysIdList + "{ \"aims\":\"" + aims + "\"," + " \"actual\":\"" + online + "\"}"; } sysIdList = sysIdList + "]"; context.Response.Write(sysIdList.ToString()); } } public bool IsReusable { get { return false; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构