码迷,mamicode.com
首页 > 其他好文 > 详细

req.getParameter()无法获取参数

时间:2018-02-09 15:24:39      阅读:566      评论:0      收藏:0      [点我收藏+]

标签:提交   开始   for   function   源码   json   www   格式化   close   

问题:前端用Ajax的post方式想servlet传递参数,servlet的getParameter()方法无法获取参数。

前端代码:

$.ajax({
                    url: ‘/TestWeb/addBook‘,
                    type: ‘post‘,
                    data: JSON.stringify($(‘#addBookForm‘).serializeJSON()),//jQuery的json序列化函数
                    //data: $(‘#addBookForm‘).serialize(),
                    dataType: "json",//返回的数据类型
                    headers : {  
                         ‘Content-Type‘ : ‘application/json;charset=utf-8‘  
                    }
                    success: function () {
                        $(‘#addModelClose‘).click();
                        layer.msg(‘添加新书成功!‘);
                    }
                    
});

想传入json数据,所以一开始 设置‘Content-Type‘ : ‘application/json;charset=utf-8‘  ,然后发现servlet那边req.Parameter()获取的都为null。百度相关信息后发现,HTML中的form表单有一个关键属性 enctype=application/x-www-form-urlencoded ,Servlet的API提供了对这种编码方式解码的支持,只需要调用ServletRequest 类中的getParameter()方法就可以得到表单中提交的数据。

然后百度知道jQuery的Ajax的post方法默认的ContentType就是这种,于是把之前的content-Type注释掉,重新运行,发现还是不行。然后我想可能是既然没有设置成json,servlet不识别json数据,于是把data改成普通的数据请求格式,即 id=123&cx=lklj 这种格式。

然后就成功在servlet用getParameter()获得数据。

 

附:

JSON.stringify($(‘#addBookForm‘).serializeJSON())可以直接把表单的内容格式化为json数据格式,但需要相对应的jquery插件

$(‘#addBookForm‘).serialize()可以直接把表单内容格式化为普通请求格式,像 id=123&cx=lklj 

更改源码的js或者html后浏览器没反应,可以试着用ctrl+F5来更新。

req.getParameter()无法获取参数

标签:提交   开始   for   function   源码   json   www   格式化   close   

原文地址:https://www.cnblogs.com/wangshen31/p/8434856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!