jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
来源:互联网 发布:php微信商城源码 编辑:程序博客网 时间:2024/06/06 06:58
转自:http://blog.csdn.net/eyebrother/article/details/36007145
java后台服务器是apache-tomcat-6.0.37
正常的post请求(不包括ajax请求)在http头中的content-type为application/x-www-form-urlencoded,这时在java后台可以通过request.getParameter(name)的形式获取.但是通过原生ajax请求时,在java后台通过request.getParameter(name)的形式却无法获取到传入的参数.
原因是原生ajax请求时,在http头中的content-type为text/plain;charset=UTF-8.当请求到达tomcat服务器时,服务器只对application/x-www-form-urlencoded形式的http,post请求进行读取body体中的参数,并放到request的parameter中,对于原生ajax请求则直接忽略,不会读取body体中的参数,才导致request.getParameter(name)读取不到参数.
这样有两种方式解决
第一种,通过json传递数据,在java后台,用下面java代码读取RequestPayload的参数,就可以获取到传入的参数
// 前台
jQuery.ajax({
url: url, // 访问地址
type: "POST", // post提交
data: JSON.stringify(parm), // 对象参数转换json格式字符串
contentType:"application/json;charset=UTF-8", // http content type
dataType: "json", // 指定json格式
success: function (data) {
// do success
},
error: function (error) {
//do error
}
});
// 后台-获取到的是多个参数的json格式字符串,通过gson转换成map对象,即可以通过键值对方式去的想要的参数
public String getRequestPayload(HttpServletRequest req) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = req.getReader();
char[]buff =newchar[1024];
int len;
while((len = reader.read(buff)) != -1) {
sb.append(buff,0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
第二种, 在前台传递参数的时候用对象,并指定content-type为application/x-www-form-urlencoded
// 前台
var parm = {
param1 : "1",
param2 : "2"
};
jQuery.ajax({
url: url, // 访问地址
type: "POST", // post提交
data: parm, // 对象转json字符串参数
contentType: "application/x-www-form-urlencoded", // http content type
success: function (data) {
// do success
},
error: function (error) {
//do error
}
});
后台通过request.getParameter(name)方式就可以获取到参数.
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- ajax post 后台request.getParameter获取不到参数
- ajax的post请求后台request.getParameter()接收不到参数问题
- JSP__通过a标签传递参数 用getParameter 获取参数
- request.getParameter 获取不到页面的参数的问题
- jsp的request.getParameter获取不到表单参数
- json传递中文乱码解决方法以及解决request.getParameter()获取参数为乱码的问题
- 通过输入流的方式获取Request中的json参数
- 通过输入流的方式获取Request中的json参数
- 通过jquery封装的ajax获取后台json数据
- ajax设置contentType=json后台获取不到参数
- Node.js通过jquery的ajax来获取参数
- jQuery之异步Ajax请求使用 通过传递参数来调用后台方法返回状态
- 后台获取ajax传参, request.getParameter(“参数名”) 中文乱码解决方法
- ajax通过post传递参数
- $.ajax()post方式请求参数无法传递,request.getParameter()无法获取
- 蓝牙4.0BLE抓包(三) – 扫描请求和扫描响应
- restful api 自我见解的一个分页小插件
- Webstorm2017激活方法(附开发软件分享链接)
- wireshark抓取本地包的方法
- 15周 项目3
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- 设计模式(六)------设计模式六大原则(5):迪米特法则
- 秒懂Hadoop和Spark联系与区别
- spark cache persist
- ZooKeeper之Java客户端API使用—更新数据。
- 程序性能优化策略
- sap-差异分摊
- Oracle 自动共享管理内存 ASMM
- fiddler无法抓包