【问题标题】:String exceeding ajax POST length limit超过 ajax POST 长度限制的字符串
【发布时间】:2014-04-29 20:42:06
【问题描述】:

我正在尝试通过 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 的代码上的内容?

【问题讨论】:

    标签: java javascript jquery ajax servlets


    【解决方案1】:

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

    【讨论】:

    • 我会在这个答案中补充一点,如果您要在 URL 中使用用户查询字符串参数,那么发送 POST 请求是没有用的......
    • 我 100% 同意。
    【解决方案2】:

    同意安德烈斯和路易吉的观点。修改后的代码如下所示:

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

    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多