这就是我正在尝试做的事情,它非常简单,但我遇到了困难:我正在尝试将JSP中形成的JSON对象发送到服务器端servlet并解析它。
到目前为止我做了什么:
$.ajax({ data: jsontosend, url: 'MYSERVLET?name=asdf', success: function(res){ alert('posted'); } })
问题:
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尚未得到答复。
帮助! :(
答案 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调试器,它会让它变得有意义来回传递。