1. 在一个系统中的表单数据项很多的编辑页面的保存菜单,经常出现点击后反映迟钝的问题,经过是由于表单中获取的参数很多,由于用 post 请求方式传参之前要对表单中获取到的参数进行条件判断,然后对每个参数用 encodeURIComponent(“…”) 进行 utf-8 编码,在后台用 URLDecoder(“…”,”utf-8”) 进行解码,然后进行相应逻辑处理。这种方式由于参数很多,会进行很多次的调用函数进行编码解码动作,造成有时点击按钮时反应慢。

之前的处理方式:

function doSaveItem(){var riskLevel=encodeURIComponent($("#riskLevelId").val());var riskDespritionTemp=$("#riskDescriptionId").val();if(riskDespritionTemp.length>1000){alert("风险长度小于1000字,请重新填写!");return;}var clientAnswer=encodeURIComponent(clientAnswerTemp);var relationKeyWords=encodeURIComponent($("#relationKeyWordsId").val());。。。。var viewZoomConfigStr="";$("input[type='checkbox']:checkbox:checked").each(function(){ viewZoomConfigStr+=$(this).val()+"#";}); $ .post('/executeSaveOperate.action?token='+Math.random()*10000000,{'riskId':riskId,'arkUser':arkUser,'riskLevel':riskLevel,'riskDesprition':riskDesprition。。。},function(data){     alert(data);if(data=="保存成功!"){window.location.href="/casedetails.action?riskId="+riskId;}});   }

改进后:在前端对获取到的表单参数放入到临时定义的一个 json 对象 jsonrpcRequestObject 中,然后通过:

var d={};

d["jsonrpcContent"]=encodeURIComponent(JSON.stringify(jsonrpcRequestObject)+"&rnd"+Math.random());

把所有的请求的表单参数数据放入一个 json 对象中,并进行统一的 utf-8 编码。

在后台用:

String json = request.getParameter("jsonrpcContent");

json = URLDecoder.decode(json, "utf-8");

String json =request.getParameter( "jsonrpcContent" );

json=URLDecoder.decode (json, "utf-8" );

然后利用: Map<String, Object> node = tools.Json.toObject(json, HashMap.class); 一次性转换出所有的请求参数到一个 map 结构中,这样获取到这些值就很容易了。

2. 在这其中遇到两个问题, 1. 在后台获取到 json 数据时,开始用 ObjectMapper 工具类中的 readValue(json, JsonNode.class); 转换成 JsonNode 格式,然后利用 JsonNode 的 get (“ .. ”)方法得到具体的 field 值,但是他跟 map 的不同是他在键值对中都多了一个双引号:如下

String 变量 json 的值是: {"riskId":"743","arkUser":" 余墨 ","riskLevel":"1111" (。。。省略) }&rnd0.7098155175198152

通过: Map<String,Object> node=tools.Json.toObject(json, HashMap.class); 进行 map 对象的还原时没有问题: node 的值是:

{ riskLevel=1111 arkUser= 余墨 , riskId=743 }

但是通过: private static final ObjectMapper jsonMapper;

static {

jsonMapper = Json.getObjectMapper();

}

JsonNode node=jsonMapper.readValue(json, JsonNode.class);

转换后的 node 的值:

{"riskId":"743","arkUser":" 余墨 ","riskLevel":"1111"}

这样在通过 node.get(“…”) 方法获取到具体的参数值时会出现多余的引号,也就是本想通过 node.get("riskId").toString() 得到值 743 ,但是现在却得到了 ”743”, 如果每个得到的这种参数值都通过 ”743”.repalceAll(“\””,””) 方式进行转换时会出现性能和业务上的隐患,毕竟可能通过表单传递的参数可能就有文本 ”” 引号信息。后来当然是通过前面的 Json 的工具类转换成 map 的方式。

2. ajax 请求中:

$ .ajax({

type : "post",

url : "executeSaveOperate.action",

dataType : "text",

data : d,

success : function(response){

if(response=="success"){

alert(" 保存成功! ");

window.location.href="/casedetails.action?riskId="+riskId;

}

},

error : function(response){

alert(" 保存失败! ");

}

});

有个属性值 dataType 开始误解为是传递的 post 数据的格式,结果开始写成是 dataType=”json”, 这样在后台处理后能正常通过 response 流 write ()正确的数据到前端,但是就不执行 success 函数,通过 error(jqXHR, textStatus, errorThrown) 函数打出日志, @ 夏雷定位是接受参数的格式问题,也就是 dataType 是用来表示 ajax 请求后的所期望的服务器返回数据的格式限定,如果没有明确指定, Jquery 会根据 response 流返回的 MIME 类型进行指定,常见的类型有: ”xml”,”html”,”srript”,”json”,”jsonp” 等。由于这里场景是根据返回的数据是否为“ success ”给出提示信息,因此只要用 dataType : ”text” 就可以了。

ajax请求遇到的一些乱码问题及其解决相关推荐

  1. ajax 传输中文乱码,关于Ajax请求中传输中文乱码问题的解决方案

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custI ...

  2. ajax中解决乱码的问题,关于Ajax请求中传输中文乱码问题的解决方案

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custI ...

  3. ajax请求时提醒参数为空的解决办法

    1.ajax请求时提醒参数为空的解决办法: 我们要把js对象用stringify转成json,然后再加上:contentType: "application/json" var _ ...

  4. ajax请求参数为中文乱码的情况

    解决中文乱码问题的方法有很多. 一.前提是ajax请求传递参数对象到后台,对象中的某个参数的值为中文,到后台之后出现乱码,导致报错.问题解决如下: rest层: 二.在tomcat的server.xm ...

  5. ajax html页面传值乱码,jQuery Ajax传值到Servlet出现乱码问题的解决方法

    最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如 ...

  6. 【jquery】ajax 请求成功后新开窗口被拦截解决方法

    问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以 ...

  7. ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题

    今天在使用 ajax 向后台请求数据时出现错误,提示状态码为 0 ,后台采用的是 spring mvc 架构. 状态码为0是什么意思呢?查找了下,原来它意味着 (未初始化)即没有调用到send()方法 ...

  8. js文件中发送ajax请求,ulr路径不起作用的解决办法

    前言: 在写Python项目的时候,单独的js文件发送ajax请求,并不起效果并且提示路径错误 错误原因分析: {% url 'myadmin_updategoodsgrade' %} # 是模板中的 ...

  9. java json乱码_Java Http请求传json数据乱码问题的解决

    业务场景:调easyui的dialog打开一个弹窗,传参是用json封装的,而且有中文,然后在极速模式是正常的,在ie11测试发现中文出现乱码了 var params = JSON.stringify ...

最新文章

  1. 比double精度更高的数据类型_Oracle数据类型总结
  2. http://blog.csdn.net/fanzhonglei
  3. 数据恢复错误卡住 linux,如何处理ORA-00376错误的恢复问题
  4. 回答面试官:我“腿特长”!阿里云小哥哥小姐姐咋看( 0 x 0 )?
  5. jclouds_使用jclouds在S3上分段上传
  6. 利用MPI实现并行排序算法PSRS
  7. MariaDB Audit  Statistics
  8. 【我来解惑】.Net应该学什么怎么学(二)
  9. git拉取远程分支到本地分支或者创建本地新分支
  10. Extjs4操作TreeStore处理proxyAjax获取的数据
  11. 检查pandas是否存在一列或者多列
  12. 计算机桌面文件如何发送给qq好友,桌面文件如何发到qq
  13. OrCAD PSpice添加Spice模型——Cadence 17.4
  14. 简单介绍一下用加速度传感器修正角速度传感器(陀螺仪)累计误差的原理
  15. matlab拓扑图画法,告诉你漂亮标准的网络拓扑图是怎么画出来的?
  16. iOS 10.0的网络问题:设置使用无线局域网与蜂窝移动的应用
  17. F.dropout()与nn.dropout()
  18. 夜莺(Nightingale)企业级监控平台
  19. PyQt5桌面应用开发----环境安装配置及第一个桌面应用程序
  20. 趣图 | EDG牛逼!!!

热门文章

  1. 37岁Java程序员求职6K+职位被怼,你怎么看?
  2. 记一次配置深信服设备的过程
  3. dell poweredge服务器_这款AMD服务器不简单
  4. 【UVA1723】Intervals
  5. python基础教程读书笔记_《Python基础教程》读书笔记10
  6. ios系统升级记录适配篇
  7. 计算机开机后无法网络拨号怎样处理,电脑不能上网了怎么办?教你宽带故障排查方法...
  8. c++直角空心三角形_压轴题中对三角形中位线的另类诠释
  9. android pdf阅读器开发_PDF to EPUB Converter Mac(PDF转EPUB转换器)
  10. tensorflow——模型的保存和恢复tf.trian.saver()