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 编辑器实例已运行,必须重写加载。然后整篇博客都重写了。实在是不能忍!

时间: 2024-10-18 12:20:16

ajax post请求request.getParameter("")取值为null的相关文章

SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;

情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱码 @RequestMapping(params = "method=submit") public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{ String uname =

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/0309/19/834950_359080244.shtml

spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明:ModelAndView Java代码 @RequestMapping("/show1") publicModelAndView show1(HttpServletRequest request, HttpServletResponse response) throwsException { ModelA

request.getParameter()不能获得值

在调试汇付接口的过程中,接收返回的参数用request.getParameter()获取参数的时候,获得的值为null. 搜索资料说这种情况跟form表单的属性 enctype有关系.当form表单内容采用enctype=multipart/form-data编码时, 调用request.getParameter()获取不到数据.可以通过request.getInputStream()获得数据,并把 “UsrCustId=6000060003271506, BgRetUrl=http%3A%2F

过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题

如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为"multipart/form-data",时,需要如下处理: HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; String contentTy

@Value取值为NULL的解决方案

在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取: @Value("${tag}") private String tagValue; 但是取值时,有时这个tagvalue为NULL,可能原因有: 使用static或final修饰了tagValue,如下: private static String tagValue; //错误 private final String tagValue; //错误 类没有加上@Compo

linux 上部署tomcat的java web项目,会出现post提交request.request.getParameter()的得不到值的情况

有时候明明在windows上非常的正常,而在linux上就不正常了,在windows上post提交request.request.getParameter()有值,而在liunx上没有值. 我开始以为是我的tomcat版本,发现其实不是,tomcat在linux和windows上基本是相同的. 这样我就怀疑是不是我的配置文件错误,在tomcat下的conf的server.xml文件配置错误.就决定去找这个文件,我就抱着试一试的心态了一个地方 <Connector port="80"

使用 NodeJS + Express从GET/POST Request 取值

过去无论哪一种网站应用程式的开发语言,初学者教学中第一次会提到的起手式,八九不离十就是GET/POST Request 的取值.但是,在Node.js + Express 的世界中,仿佛人人是高手,天生就会使用,从不曾看到有人撰文说明. 这应该算是开发Web Service 的入门,在Client 与Server 的互动中,浏览器发出GET/POST Request 时会传值给Server-side,常见应用就是网页上以POST method 送出的表单内容,或是网址列上的Query Strin

使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络

過去無論哪一種網站應用程式的開發語言,初學者教學中第一次會提到的起手式,八九不離十就是 GET/POST Request 的取值.但是,在 Node.js + Express 的世界中,彷彿人人是高手,天生就會使用,從不曾看到有人撰文說明. 這應該算是開發 Web Service 的入門,在 Client 與 Server 的互動中,瀏覽器發出 GET/POST Request 時會傳值給 Server-side,常見應用就是網頁上以 POST method 送出的表單內容,或是網址列上的 Qu