在servlet中使用JSON对象时出现问题

时间:2011-09-08 13:49:08

标签: jquery json servlets

这就是我正在尝试做的事情,它非常简单,但我遇到了困难:我正在尝试将JSP中形成的JSON对象发送到服务器端servlet并解析它。

到目前为止我做了什么:

  • 构建了json。
  • 将json发送到后端
$.ajax({
            data: jsontosend,
            url: 'MYSERVLET?name=asdf',
            success: function(res){
                alert('posted');
            }
        })

问题:

  • 这个JSON的名称是什么,所以我可以使用request.getParameter()在servlet中获取它?
  • 当我打印request.getParameterNames()时,我将参数名称作为JSON字符串本身,因此MYSERVLET中所有参数名称的输出如下所示
Parameter = name
Parameter = {"ticker":"asd","date":"asd","bucket":"300","entry":[{"type":"asd","indicator":"asd","condition":"asd"}],"exit":[{"type":"qwe","indicator":"qwe","condition":"qwe"}]}

任何人都知道问题是什么?

我也尝试查看question here on stackoverflow,但同样存在问题。还有duplicate question尚未得到答复。

帮助! :(

2 个答案:

答案 0 :(得分:5)

阅读http://api.jquery.com/jQuery.ajax/#sending-data-to-server

  

data选项可以包含表单的查询字符串   key1 = value1& key2 = value2,或形式为{key1:'value1',key2的地图:   '值'}。如果使用后一种形式,则将数据转换为a   在发送之前使用jQuery.param()查询字符串。

所以,你应该使用

$.ajax({
        data: {theNameOfTheParameter : jsontosend,
               name : 'asdf'},
        url: 'MYSERVLET',
        success: function(res){
            alert('posted');
        }
    })

并使用request.getParameter("theNameOfTheParameter")获取JSON字符串。

答案 1 :(得分:0)

您没有在servlet中获取json对象。 JQuery将它转换为http参数,就像你从表单中获得的那样。示例:?ticker = asd& bucket = 300

所以回答你的问题。没有单一的名字。反对的json爆炸了多个名字。

编辑:尝试添加     输入:'post'

根据您的要求。你也可以添加     processData:false  在这种情况下,JQuery将发送json而不是http params。无论如何,我真的建议使用像fiddler这样的http调试器,它会让它变得有意义来回传递。