打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一般处理程序接收json , ashx

分两种情况
1json字符
前端代码

      var data = {
          SignatureStr: '5kESq0Dly1T/tngzmmaMQA==',
          }
      $.ajax({
            url: 'XXX.ashx?action=regist',
            data: JSON.stringify(data),//'{'SignatureStr':'5kESq0Dly1T/tngzmmaMQA=='}'
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            type: 'post',
            success: function(data) {
            },
            error: function(data) {
               
            }
        });

后端

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = 'application/json';
            //context.Response.Write('Hello World');
            string action = context.Request['action'] == null ? '' : context.Request['action'].ToString();
            switch (action)
            {
                case  'regist':
                    Regist(context);
                    break;
                default:
                    break;
            }
        }


        public void Regist(HttpContext context) 
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            StreamReader reader = new StreamReader(context.Request.InputStream);
            String decodeStr = HttpUtility.UrlDecode(reader.ReadToEnd());
			
             JavaScriptSerializer jss = new JavaScriptSerializer();
              //将json字符串反序列化成一个Dictionary对象
            Dictionary<String, Object> dicParameter = jss.Deserialize<Dictionary<String, Object>>(jsonStr);
       }

完美,没任何问题

2 json对象

前端代码

      var data = {
          SignatureStr: '5kESq0Dly1T/tngzmmaMQA==',
          id=0
          }
      $.ajax({
            url: 'XXX.ashx?action=regist',
            data: data,//{'SignatureStr':'5kESq0Dly1T/tngzmmaMQA==','id':'0'}
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            type: 'post',
            success: function(data) {
            },
            error: function(data) {
               
            }
        });

后端

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = 'application/json';
            //context.Response.Write('Hello World');
            string action = context.Request['action'] == null ? '' : context.Request['action'].ToString();
            switch (action)
            {
                case  'regist':
                    Regist(context);
                    break;
                default:
                    break;
            }
        }


        public void Regist(HttpContext context) 
        {
            StreamReader reader = new StreamReader(context.Request.InputStream);
            String decodeStr = HttpUtility.UrlDecode(reader.ReadToEnd());
			//decodeStr: SignatureStr=5kESq0Dly1T/tngzmmaMQA==&id=0
			NameValueCollection nvc=new NameValueCollection();
			ParseUrl(decodeStr,out nvc);
       }
   		
     
        public void ParseUrl(string deCodeParams,out NameValueCollection nvc)
        {
            if (deCodeParams == null)
                throw new ArgumentNullException('deCodeParams');

            nvc = new NameValueCollection();

            if (deCodeParams == '')
                return;
			
            // 开始分析参数对               
            Regex re = new Regex(@'(^|&)?(\w+)=([^&]+)(&|$)?', RegexOptions.Compiled);
            MatchCollection mc = re.Matches(deCodeParams);

            foreach (Match m in mc)
            {
                nvc.Add(m.Result('$2').ToLower(), m.Result('$3'));
            }
        }

这样也可以解决

遇到的坑
当初自己写了个处理decode后的url值
private string GetJsonString(string UrlDecode)
{
return “{”'+UrlDecode.Replace('=', “”:'').Replace('&','','')+''}';
}
遇到这种 “5kESq0Dly1T/tngzmmaMQA==”,出问题了,遂bd遇见上述reg的写法,可以正确解决问题

但有没有更完美的方式呢

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
.Net在线编辑器:KindEditor及CkEditor配置说明
Jquery Ajax 异步处理Json数据介绍
[ASP.NET] 於ASP.NET使用 jQuery EasyUi DataGrid 存取資料
easyui datagrid+ashx实现动态生成列
ashx跨域问题
asp.net中 使用jquery ashx 做ajax,json做数据传输
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服