【问题标题】:Problem consuming JSON object in a servlet在 servlet 中使用 JSON 对象时出现问题
【发布时间】:2011-11-13 00:40:54
【问题描述】:

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

到目前为止我做了什么:

  • 构造了 json。
  • 将 json 发送到后端
$.ajax({
            数据:json发送,
            url: 'MYSERVLET?name=asdf',
            成功:函数(res){
                警报(“已发布”);
            }
        })

问题:

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

有人知道问题是什么吗?

我也尝试查看此question here on stackoverflow,但那里也存在同样的问题。还有一个duplicate question 没有回答。

帮助! :(

【问题讨论】:

  • 您是否使用过类似 Firefox 的 LiveHeaders 来查看发送的内容?您将能够看到发送到引用 servlet 的所有键值对。

标签: jquery json servlets


【解决方案1】:

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

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

所以,你应该使用

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

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

【讨论】:

  • 真棒酱。非常感谢! :D
【解决方案2】:

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

所以回答你的问题。没有单一的名字。反对的 json 被分解为多个名称。

编辑:尝试添加 类型:'发布'

满足您的要求。您还可以添加 处理数据:假 在这种情况下,JQuery 将发送 json 而不是 http 参数。无论如何,我真的建议使用像 fiddler 这样的 http 调试器,这将使来回发送的内容看起来很明显。

【讨论】:

  • 我刚刚通过 System.out.println(request.getParameter("ticker")); 尝试过,我得到 null :(
  • @shreyas:你找到解决方案了吗??如果你愿意,请分享。
猜你喜欢
  • 1970-01-01
  • 2015-10-19
  • 2014-01-21
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2016-08-25
  • 1970-01-01
相关资源
最近更新 更多