字符串超过ajax POST长度限制

String exceeding ajax POST length limit

本文关键字:POST 长度限制 ajax 字符串      更新时间:2023-09-26

我正试图通过ajax POST请求将一个数组从jsp发送到Servlet。我的数组有几个带有许多字段的对象。如果我尝试发送一个包含11个对象的数组-使用JSON.stringify-它可以正常工作(数组在服务器端接收(,但当我尝试发送包含12个以上对象的数组时就会出现问题。错误是:400 Bad Request,用Google Chrome调试器查找,我可以找到这个错误:fluxos:(unable to decode value),其中fluxos是我的数组的名称。

代码的相关部分:

for(var i=0; i<numberOfConnections; i++) {
    fluxo = criaEstruturaFluxo(i);
    fluxos.push(fluxo);
}
$.ajax({
    type: "POST", 
    url: 'Servlet?fluxos='+JSON.stringify(fluxos),
            success: function (data) {
            alert('success');
    }
});
...
function criaEstruturaFluxo(i) {
    ...
    ...
    var fluxo = {
      xOrigem: xOrigem, 
      yOrigem: yOrigem,
      xDestino: xDestino,
      yDestino: yDestino,
      codWorkflow: codWorkflow,
      acaoAvanco: acaoAvanco,
      codAtividadeOrigem: codAtividadeOrigem[1],
      codAtividadeDestino: codAtividadeDestino[1],
      numero: numero,
      nomeAtividadeOrigem: nomeAtividadeOrigem,
      nomeAtividadeDestino: nomeAtividadeDestino,
      codConexao: codConexao,
      tipoOrigem: tipoOrigem,
      tipoDestino: tipoDestino,
      xFluxoOrigem: xFluxoOrigem,
      yFluxoOrigem: yFluxoOrigem,
      xFluxoDestino: xFluxoDestino,
      yFluxoDestino: yFluxoDestino,
      deletarArquivo: deletarArquivo,
      ultimaConexao: ultimaConexao,
      caminhoArquivo: caminhoArquivo,
      xTela: xTela,
      yTela: yTela
    };
    return fluxo;
}

我的编码数组有8000多个字符的长度,因此,我认为它超过了POST请求可以处理的最大长度。。。这可能吗?或者可能是我发送到Servlet的代码中的某些内容?

您的url很长。理论上,这不应该引起任何问题,但有一个实际的限制,这取决于您使用的服务器和代理。发送请求正文上的数据,而不是url上的数据。

同意Andres&路易吉。以下是您修改后的代码:

$.ajax({
url: "Servlet",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "fluxos": fluxos }),
success: function(data) {
    alert("success");
}

});