我通过jQuery
ajax方法发送大型UTF-8文本数据(有时包含中文)。该方法设置为POST
。但是在我的服务器端(我正在使用tomcat 7),每当我做request.getParameter
时,它都会截断数据。
数据示例:var datas = "article={some very long UTF-8 text}&id=234&author=3434
"
我的jquery代码:
$.ajax({
type: "POST",
url: src,
processData: true,
data: datas,
cache: false,
success: function(response){
},
})
通过阅读一些文章,我发现我必须更改连接器并设置maxPostSize
和maxHTTPHeaderSize
。我做了所有,并改为大值,但结果相同。请指导我为什么会这样,以及如何解决它?
答案 0 :(得分:1)
除了增加maxPostSize
之外,我只更改了数据并使用encodeURIComponent
进行编码。 request.getParameter
正在返回截断的数据,因为它由于特殊字符呈现UTF-8文本而中断。我将数据更改为
var datas = "article="+ encodeURIComponent({some very long UTF-8 text})+"&id=234&author=3434"
在服务器端(Java)我使用
String article = request.getParameter("article");
if(article !=null) // null check is necessary to prevent from exception if value is not sent by client
article = URLDecoder.decode( article );
并且事情对我有用。
答案 1 :(得分:0)
POST
方法默认大小为 2M 。
如果您使用tomcat作为Web容器,请尝试增加maxPostSize
。
<Connector
debug="0"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="8080"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="GBK"
>
如上所述,将maxPostSize
设置为 0 ,表示发布数据时无限制大小。
答案 2 :(得分:0)
Input Text Box:<INPUT size="30" type="text" maxlength="30" name="aField" value='<%=stringField%>'>