在servlet中使用JSON对象时出现问题
这就是我正在尝试做的事情,它非常简单,但我陷入困境:我正在尝试将JSP中形成的JSON对象发送到服务器端servlet并解析它。
到目前为止我做了什么:
- 构建了json。
- 将json发送到后端
$就({ 数据:jsontosend, url:'MYSERVLET?name = asdf', 成功:function(res){ 警报( '贴'); } })
问题:
- 这个JSON的名称是什么,所以我可以使用request.getParameter()在servlet中获取它?
- 当我打印request.getParameterNames()时,我得到参数名称作为JSON字符串本身,所以MYSERVLET内的所有参数名称的输出如下所示
参数=名称 参数= {“ticker”:“asd”,“date”:“asd”,“bucket”:“300”,“entry”:[{“type”:“asd”,“indicator”:“asd”,“条件 “:” ASD “}],” 退出 “:[{” 类型 “:” QWE”, “指示器”: “QWE”, “条件”: “QWE”}]}
任何人都知道问题是什么?
此外,我尝试在stackoverflow上查看此问题,但同样存在问题。 还有一个重复的问题没有得到解答。
救命! 🙁
阅读http://api.jquery.com/jQuery.ajax/#sending-data-to-server :
data选项可以包含forms为key1 = value1&key2 = value2的查询字符串,或者包含{key1:’value1’,key2:’value2′}forms的映射。 如果使用后一种forms,则在发送之前使用jQuery.param()将数据转换为查询字符串。
所以,你应该使用
$.ajax({ data: {theNameOfTheParameter : jsontosend, name : 'asdf'}, url: 'MYSERVLET', success: function(res){ alert('posted'); } })
并使用request.getParameter("theNameOfTheParameter")
来获取JSON字符串。
您没有在servlet中获取json对象。 JQuery将它转换为http参数,就像你从表单中获得的那样。 示例:?ticker = asd&bucket = 300
所以回答你的问题。 没有单一的名字。 反对的json爆炸了多个名字。
编辑:尝试添加类型:’post’
为了您的要求。 您还可以添加processData:false,在这种情况下,JQuery将发送json而不是http params。 无论如何,我真的建议使用像fiddler这样的http调试器,它会让它变得有意义来回传递。