字符串超过ajax POST长度限制

时间:2014-04-29 20:42:06

标签: java javascript jquery ajax servlets

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

RELEVANTE代码部分:

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的代码?

2 个答案:

答案 0 :(得分:6)

你的网址很长。从理论上讲,这不应该导致任何问题,但是实际限制取决于您使用的服务器和代理。发送请求正文的数据而不是网址。

答案 1 :(得分:4)

同意Andres&amp; Luiggi。以下是修改过的代码的样子:

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

});