jquery提交对象到一般处理程序(ashx)

 

   class ReportRQ//实体参数
    {
        public string startDate { get; set; }
        public string endDate { get; set; }
        public int TabSet { get; set; } 
    }
    /// <summary>
    /// ReportDataApi 的摘要说明
    /// </summary>
    public class ReportDataApi : IHttpHandler, IRequiresSessionState//启用session
    {
        private static string url = ConfigurationManager.AppSettings["GWHomeReportGateWay"];
        public void ProcessRequest(HttpContext context)
        {
            Yeesky.Platform.Operator op = (Yeesky.Platform.Operator)context.Session["Op"];
            if (op == null)
            {
                context.Response.ContentType = "application/json";
                string error = JsonConvert.SerializeObject(new {R=false,DataType="js",JSContent= "alert('会话已过期,请您重新登录。');window.location.href='/Login.aspx';" });//目前返回的json对象
                context.Response.Write(error);
                return;
            }
            context.Response.ContentType = "application/json";//前端接收到json对象,而非字符串
            Stream inputStream = context.Request.InputStream;
            Encoding encoding = context.Request.ContentEncoding;
            StreamReader streamReader = new StreamReader(inputStream, encoding);
            string strJson = streamReader.ReadToEnd();
            var rqJson = JsonConvert.DeserializeObject<ReportRQ>(strJson);
            string userCode = op.UserCode;
            string startDate = string.Empty;
            if (rqJson!=null && !string.IsNullOrWhiteSpace(rqJson.startDate))
                startDate = rqJson.startDate;
            string endDate = string.Empty;
            if (rqJson!=null && !string.IsNullOrWhiteSpace(rqJson.endDate))
                endDate = rqJson.endDate;
            if (!string.IsNullOrWhiteSpace(endDate))
                endDate = DateTime.Parse(endDate).AddDays(1).ToString("yyyy-MM-dd");
            string action = context.Request["action"];
            string result = string.Empty;
            try
            {
                switch (action)
                {
                    case "getcostanalysetaffic":
                        result = GetCostAnalyseTaffic(startDate, endDate, userCode);
                        break;
                    case "reporttabset":
                        result = ReportTabSet(rqJson.TabSet, userCode);
                        break;
                    case "getreporttabset":
                        result = GetReportTabSet(userCode);
                        break;
                    case "getanyalyseuser":
                        result=GetAnyalyseUser(startDate, endDate, userCode);
                        break;
                    case "getcostanalysedepartment":
                        result = GetCostAnalyseDepartment(startDate, endDate, userCode);
                        break;
                    case "getcostanyalysechannel":
                        result = CostAnyalyseChannel(startDate, endDate, userCode);
                        break;
                    case "getcostapprovalanalyse":
                        result = GetCostApprovalAnalyse(startDate, endDate, userCode);
                        break;
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            
            context.Response.Write(result);
        }
}

 

前端代码

function AjaxPostData(url, param, callback) {
    var rqOk = true;
    var rAjax = $.ajax({
        //async: true, //异步执行
        url: url, //要求为String类型的参数,(默认为当前页地址)发送请求的地址。就是在此发送需求到对应的后台去处理,后台根据这个url来区别不同的请求。
        data:JSON.stringify(param),
        dataType: "json",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            try {
                if (result && result.R) {
                    callback(result.Data);
                } else if (result && !result.R && result.JSContent) {
                    eval(result.JSContent);//前端无法执行后端返回的js代码,使用evel
                }
                rqOk = true;
            } catch (e) {
                console.log(result);
                console.log(e);
                console.log(url);
                rqOk = false;
            }
        },
        error: function (err) {
            console.log(err);
            console.log(url);
        },
        failure: function (result) {
            ErrorBack(result);
        }
    });
    return rAjax;
}

 

posted @ 2019-01-23 09:17  wjl910  阅读(163)  评论(0)    收藏  举报