当前位置: 代码迷 >> .NET分析设计 >> jquery ajax+json(插件) 提交数据,让人捉摸不透的是:【部分中文显示问号】,该怎么解决
  详细解决方案

jquery ajax+json(插件) 提交数据,让人捉摸不透的是:【部分中文显示问号】,该怎么解决

热度:2105   发布时间:2013-02-25 00:00:00.0
jquery ajax+json(插件) 提交数据,让人捉摸不透的是:【部分中文显示问号】
各位网友:
目前碰到一个棘手的难题,使用json格式封装页面数据提交到action,没有用表单,而是直接使用js获取数据,组织成json格式字符串,通过jquery的ajax功能提交到action中(请不要说为什么不用表单)。需求很明了。
1。组织数据封装到js对象
JScript code
function doActive(kind,group,state,model,speed,settemp,lock){    this.fkind=kind;    this.fgroup=group;    this.fstate=state;    this.fmodel=model;    this.fspeed=speed;    this.fsettemp=settemp;    this.flock=lock;}

2。获取数据填充到js对象并组织成json格式
JScript code
    var states=$("#New_fstate").val();        var model=$("#New_fmodel").val();        var speed=$("#New_fspeed").val();        var settemp=$("#New_fsettemp").val();        var lock=$("#New_flock").val();        var myData=new doActive(kindsArray,groupsArray,states,model,speed,settemp,lock);            alert($.toJSON(myData));    $.ajax({             type:"post",             url:"groupControl.do?operate=doAdd",             data:$.toJSON(myData),                         dataType:"text",             contentType:"application/json;charset=UTF-8",             error:function(XmlHttpRequest, textStatus, errorThrown){                 alert("操作异常" + XmlHttpRequest.responseText);             },             success:function(data){                 if(data==1){                    showMsg("操作完成",4000,"success");                }else{                                    showMsg("操作异常",4000,"error");                }                             }               });

其中 alert打印结果是
JScript code
{"fkind":["张三","李四"],"fgroup":"["王五","赵七"]","fstate":""}

说明发送格式正确

3。action接收数据
Java code
BufferedReader br = new BufferedReader(new InputStreamReader(                    (ServletInputStream) request.getInputStream()));            String line = null;            StringBuilder sb = new StringBuilder();            while ((line = br.readLine()) != null) {                sb.append(line);            }            String d=sb.toString();            //d=new String(d.getBytes("GB2312"),"UTF-8");             JSONObject jsonObj = JSONObject.fromObject(d);


最后打印json字符串,结果出现 部分中文显示 问号 也就是说 有的中文能显示,有的就是问号。
本人已经进行了相应的转码工作,但是没有用,实在是没地方想了,请各位提示一下,该往哪方面考虑
这是怎么会发生的。

------解决方案--------------------------------------------------------
再仔细看看什么样的中文正常显示,哪些不能正常显示.发上来大家帮你想想.汉字之间有没有空格,换行或其他符号.
------解决方案--------------------------------------------------------
function doSubmit(){
//{"fkind":["张三","李四"],"fgroup":"["王五","赵七"]","fstate":""}
var variable = {};
variable.fkind = [encodeURI("张三"),encodeURI("李四")];
variable.fgroup = ["王五","赵七"];
variable.fstate = "";
alert($.toJSON(variable));
$.ajax({
type:"post",
url:"<%=request.getContextPath()%>/servlet/AjaxTestServlet",
data:$.toJSON(variable),
dataType:"text",
contentType:"application/json;charset=UTF-8",
error:function(XmlHttpRequest, textStatus, errorThrown){
  相关解决方案