加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:04:23 所属栏目:百科 来源:网络整理
导读:今天在写提交一个json数据到后台,然后后台返回一个json数据类型。但是发现后台通过request.getParamter(“”)取到的值为null。 于是写一个简单的ajax 请求,来排查问题 前台代码: $(document).ready( function () { $( "#ajax" ).click( function () { var

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读