使用jquery ajax post在请求中传递时,字符串被截断

时间:2014-08-08 19:03:31

标签: jquery ajax jsp

我试图将请求中的字符串传递回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帖子的最大字符串长度?

感谢您的帮助。

1 个答案:

答案 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混淆。