JSON数据限制

时间:2014-06-15 18:27:20

标签: java javascript json grails

我们在Tomcat上运行的grails 2.2.4应用程序可以使用用户摄像头和按键,使用Javascript在客户端收集一些数据并使用POST发送。

在收集数据的视图中:

<g:form name="testResultsForm" id="testResultsForm" controller="customer" action="thankYou" method="post">
<h3>Dummy data!</h3>

<input type="text" style="visibility: hidden" name="testResults" id="testResults"/>

<button type="submit" class="btn btn-default">Submit dummy data</button>
</g:form>

在JS中,我们将所有相机数据分配给此html元素并提交表单:

TestUtils.setValue('testResults', sendData);
$("#testResultsForm").submit();

在grails控制器中,我们有以下行来解析JSON:

def data = JSON.parse(params.testResults)

一切都按预期工作,除非用户花费的时间超过正常时间并进行大量击键。错误看起来像:

2014-06-14 01:22:14,323 [http-8443-16] ERROR (org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver) - JSONException occurred when processing request: [POST] /qbcheck/customer/thankYou
Expected a ',' or ']' at character 524288 of {"patkey":"","test_version":"1.4","data_version":"1.3","patientid":"","test_date":"","test_duration":0,"gender":"","dob":"","fov":62,"fps":26,"scale_factor":0,"country":46,"camera_data":{"x":[353,353,353,353,3......

它始终在字符524288处失败。这导致我们调查可能存在数据量的限制,我们查看了Tomcat并发现它默认使用maxpostsize属性允许2MB数据。我们仍然将它更新为更大的数字,以确保。同样地,我们试图查看Grails和JS方面,但无法找到任何限制。

寻找这方面的任何指示。我们可以根据需要提供更多详细信息。

1 个答案:

答案 0 :(得分:0)

我们发现html&#34;输入&#34;硬盘限制为512 KB。理想情况下,我们应该在尝试通过JS为输入值分配更多数据时收到某种错误/警告。但是,这不会发生

所以我们改变了以前定义为的输入:

<input type="text" style="visibility: hidden" name="testResults" id="testResults"/>

到文字区域:

<textarea style="visibility: hidden" name="testResults" id="testResults"/>

这使我们能够传输大于512 KB的数据。