JQuery向ashx提交中文参数方案

来源:互联网 发布:sql2000数据库 编辑:程序博客网 时间:2024/06/05 09:40

字符编码这个东西,一旦和中文打上交道就不可避免出现乱码,今天项目用到了JQuery向ashx提交中文参数的这一块,折腾了一天,开始是各种乱码,最后中算弄好了。

客户端:

//异步获取数据var tpAction=action+'getSearch.ashx?key='+encodeURIComponent('中国');        $.getJSON(tpAction,function(rsp){//请求成功        if(rsp.status=='1'){var list=rsp.item;var len=list.length;        if(len==0){//没有数据直接返回                     setNull();return;        }        //组装数据                var s=zy_tmpl(templ,list,len);                $list.append(s);        }else{        alert('','加载数据失败,请重试','确定');        }                },'json',function(err){//请求失败        alert('','加载失败,请检查网络设置!','确定');             },'POST','');

服务器端:

        string keyy = context.Request["key"];        if (keyy != null)        {            string key = HttpUtility.UrlDecode(context.Request["key"].ToString());            //string key = context.Server.HtmlDecode(context.Request.Params["key"].ToString());            string log = "getSearch.ashx?key=" + key;            string logsql = "insert into logs(createtime,contents) values('" + DateTime.Now.ToString() + "','" + log + "')";            Sqlbase.ExecuteNonQuery(CommandType.Text, logsql, null);                        //more            string sql = "select * from news where title like '%" + key + "%' order by id desc";            DataTable dt = Sqlbase.ExecuteTable(CommandType.Text, sql, null);            result rs = new result();            rs.status = 1;            rs.msg = "成功";            rs.item = dt;            string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(rs);            context.Response.Clear();            context.Response.ContentEncoding = Encoding.UTF8;            context.Response.ContentType = "application/json";            context.Response.Write(strJson);            context.Response.Flush();            context.Response.End();        }


这里根本就没有进行什么编码设置,其实就是JS用encodeURIComponent()对中文字符串编码,C#用HttpUtility.UrlDecode(context.Request["key"].ToString())进行解码,是不是很简单呢!可是我一天的实践证明:JS端用encodeURIComponent()要比escape()好多了,至于区别大家可以google一下,C#的解码函数也一堆,像什么Server.UrlDecode之类的,但是推荐使用HttpUtility.UrlDecode(),好处大家同样也可以google!


原创粉丝点击