ajax post请求request.getParameter("")取值为null
今天在写提交一个json数据到后台,然后后台返回一个json数据类型。但是发现后台通过request.getParamter(“”)取到的值为null。
于是写一个简单的ajax 请求,来排查问题
前台代码:
$(document).ready(function(){
$("#ajax").click(function(){
var 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的形式了。所以网友的方法不适用
http://m.blog.csdn.net/blog/eyebrother/36007145
二.编码格式
既然在调试器中看到request的发送内容没问题,那么就是编码格式的问题了。在后台添加代码:
request.setCharacterEncoding(“utf-8”);
可以解决这个问题。
但是发现前台写成这种类型
data :{
"depart" : depart
},
后台取到的也是null。所以最终将js文件编码格式改为utf-8.解决这个问题
三.发送json类型数据到后台
$(document).ready(function(){
$("#ajax").click(function(){
var 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的更多相关文章
- springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/03 ...
- html 页面表单如果是disabled,则不能提交到服务器端,request.getParameter得到的将为null
html 页面表单如果是disabled,则不能提交到服务器端,request.getParameter得到的将为null 解决方法:使用hidden 利用javascript赋值,传递到后台
- @Value取值为NULL的解决方案------https://blog.csdn.net/zzmlake/article/details/54946346
@Value取值为NULL的解决方案 https://blog.csdn.net/zzmlake/article/details/54946346
- SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;
情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱 ...
- spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...
- Web版需求征集系统所得2,servlet中request.getParameter获值乱码问题解决
servlet获值乱码问题解决 解决办法一(最简单有效) request.setCharacterEncoding("utf-8"); 解决办法二 因为乱码问题的产生是因为默认格式 ...
- 过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题
如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为“multipart/form-d ...
- Spring @Value取值为null或@Autowired注入失败
@Value 用于注入.properties文件中定义的内容 @Autowired 用于装配bean 用法都很简单,很直接,但是稍不注意就会出错.下面就来说说我遇到的问题. 前两天在项目中遇到了一个问 ...
- @Value取值为NULL的解决方案
在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取: @Value("${tag}") private String ...
随机推荐
- Java HashMap的扩容
最近博主参加面试,发现自己对于Java的HashMap的扩容过程理解不足,故最近在此进行总结. 首先说明博主德Java为1.8版本 HashMap中的变量 首先要了解HashMap的扩容过程,我们就得 ...
- Oracle中表字段相关操作举例
--创建测试表 create or replace table student ( xh ), --学号 xm ), --姓名 sex ), --性别 birthday date, --日期 sal ...
- Java 读取Excel文件
https://www.cnblogs.com/wwzyy/p/5962076.html 先把上面的参考博客看了,如果会导入包的话,下面的教程就直接忽略emm 这时候,你应该把jar包下载 ...
- Oracle12c中SQL性能优化(SQL TUNING)新特性之自动重优化(automatic reoptimization)
Oracle12c中的自动重优化 Oracle12c中的自适应查询优化有一系列不同特点组成.像自适应计划(AdaptivePlans)功能可以在运行时修改执行计划,但并不允许计划中连接顺序的改变.自动 ...
- Node.js 进程
process 是全局对象,能够在任意位置访问,是 EventEmitter 的实例. 退出状态码 当没有新的异步的操作等待处理时,Node 正常情况下退出时会返回状态码 0 .下面的状态码表示其他状 ...
- Go 语言常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifier [type] ...
- Java程序员的Golang入门指南(上)
Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...
- 20160216.CCPP体系详解(0026天)
程序片段(01):01.MemCpy.c 内容概要:内存拷贝 #include <stdio.h> #include <stdlib.h> #include <memor ...
- Dynamics CRM 部署NLB后使用群集名称访问弹验证框验证不过的解决方法
自上次部署NLB到现在已有段时间了,今天部署完后遇到了个问题,上次也遇到过但忘记了,本篇作为对该问题的一个记录,部署文档:https://blogs.msdn.microsoft.com/niran_ ...
- 微信小程序基础之常用控件text、icon、progress、button、navigator
今天展示一下基础控件的学习开发,希望对大家有所帮助,转载请说明~ 首先延续之前的首页界面展示,几个跳转navigator的使用,然后是各功能模块的功能使用 一.text展示 使用按钮,进行文字的添加与 ...