ajax post请求request.getParameter()取值为null

今天在写提交一个json数据到后台,然后后台返回一个json数据类型。但是发现后台通过request.getParamter(“”)取到的值为null。

于是写一个简单的ajax 请求,来排查问题 前台代码:

$(document).ready(function(){$(depart=”depart”;$.ajax({url :path+ “/AjaxReponse”,data :”depart=”+depart,type : “post”,dataType : “json”,success: function(data){alert(data);}});});});

后台代码:

String depart=request.getParameter(“depart”);

现象:后台取到值为null。但是在google chrome调试工具调试时,request中已经有发送的值了

一.网友方法

正常的post请求(不包括ajax请求)在http头中的content-type为application/x-www-form-urlencoded,这时在java后台可以通过request.getParameter(name)的形式获取.但是通过原生ajax请求时,在java后台通过request.getParameter(name)的形式却无法获取到传入的参数. 但是实际上在上图中可以看到,content-type已经是application/x-www-form-urlencoded的形式了。所以网友的方法不适用

二.编码格式 既然在调试器中看到request的发送内容没问题,那么就是编码格式的问题了。在后台添加代码: request.setCharacterEncoding(“utf-8”); 可以解决这个问题。 但是发现前台写成这种类型

data :{“depart” : depart},

后台取到的也是null。所以最终将js文件编码格式改为utf-8.解决这个问题

三.发送json类型数据到后台

$(document).ready(function(){$(isReceipt = “1”;var adress =”2″;var reason = “3”;var projectInfo = {“adress” : isReceipt,”ownerDept” : {“deptCode” : adress},”reason” : reason};$.ajax({url :path+ “/AjaxReponse”,data :{“depart” : JSON.stringify(projectInfo)},type : “post”,dataType : “json”,success: function(data){alert(data);}});});});

后台:

String depart=request.getParameter(“depart”);Gson gson = new GsonBuilder().create();Depart dep = gson.fromJson(depart),Depart.class);

前台通过JSON.stringify()方法将json类型转换为string类型发送。 后台是使用google的GSON包,然后将json类型数据(String)转换为实体类数据类型。

四.js 工具 由于js语法比较复杂,,编译器无法进行检查。所以js代码风格,错误比较难找。这里推荐我使用的两个工具。 1. JSTool 可以格式化js代码 2. JSLINT 检查语法错误 具体使用不详述了,我都是下载这两个工具对应的notepad++插件。在notepad使用非常方便。

五. 吐槽 csdn 的新版博客编辑器确实不错,但是在写博客时没有随手保存,打开其他的csdn页面时,提示markdown 编辑器实例已运行,必须重写加载。然后整篇博客都重写了。实在是不能忍!

一个人,一条路,人在途中,心随景动,

ajax post请求request.getParameter()取值为null

相关文章:

你感兴趣的文章:

标签云: