我试图将请求中的字符串传递回jsp servlet post方法,但字符串被截断。 字符串长度为40K +
帖子后调用如下:$.post("assignedStructure", "data=" + str);
在post方法中,我可以从请求参数中获取数据,但字符串被截断。
提交表单时(不通过JS调用),相同的字符串不会被截断并且完整。我不想发布整个页面,因为我只需要将数据放到服务器端来处理和保存更改(字符串基本上是一个包含需要保存的信息的json字符串)。
获取post方法中的数据如下:
if(request.getParameter("data") != "" && request.getParameter("data") != null"){
//get the orgs from the request param
ArrayList<Organization> orgs = Util.CreateDataArray(request .getParameter("data"));
//rest of method.......
}
public static ArrayList<Organization> CreateDataArray(String jsonString) {
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(jsonString);
//rest of method........
是否有ajax帖子或jquery ajax帖子的最大字符串长度?
感谢您的帮助。
答案 0 :(得分:1)
可能您没有对str
权限进行编码。就像也许它里面有一个&
。
另外,作为旁注,str == ""
不是比较Java中字符串的正确方法。应为"".equals(str)
或str.equals("")
;在Java中使用==
字符串比较内存位置(即指针等效)而不是内容。但是,您使用str == null
,因为null
是一个指针。
我原本以为你的Ajax语法错了,应该是:
$.post( "assignedStructure", { data: str } );
请参阅docs。在函数的data
部分,它们总是在示例中使用JSON对象,而不是字符串:所以{ data: str }
不是"data=" + str
。但正如Athony在评论中指出的那样,它确实说你可以这样做。对我来说,虽然看到var=val
语法与POST似乎很奇怪,因为它看起来像乍一看让GET与POST混淆。