由于服务器限制,我遇到了问题。服务器只允许传输25MB以下的数据。应该上传的数据是80MB+。我正在使用 JSF、Primefaces 和 JavaEE。 我的想法是通过 AJAX 请求以小包的形式发送数据。数据被分成足够小的块,但是当我单击应该与块一样频繁地执行AJAX的commandButton时,它会发送具有正确内容的第一个数据块,并且在js单击按钮后立即发送在每个请求中以及循环完全完成后发送最后一个块的内容。所以第一个请求和第二个请求之间有很长的间隔。我不需要它们井然有序。我只是希望所有数据都到达后端。
我的 html 看起来像:
<h:form>
<input type="text" id="dataInput" name ="dataInput">
<h:commandButton action="#{ImportController.getTransmittedData()" id="button">
<p:ajax execute="dataInput"></p:ajax>
</h:commandButton>
</h:form>
我的 js 看起来像:
startTransmittingData(){
for(let i=0; i<chunks.length(); i++){
document.getElementById("dataInput").value=chunks[i];
document.getElementById("button").click();
}
}
ImportController 仅获取数据。
是否无法循环命令按钮并使用 AJAX 立即做出反应?它看起来也好像被“卡”在某个地方了。循环完成后,它开始发送包含错误内容的 AJAX 请求,因为在循环块列表时输入发生了变化。
我尝试更改ajax,但没有任何效果。
您需要使用 += 运算符附加到您的 .value,而不是每次都用您正在使用的 = 运算符替换它。
document.getElementById("dataInput").value += chunks.get(i)