2014-04-29 320 views
1

我想通過ajax POST請求從我的jsp發送一個數組到我的Servlet。我的數組有幾個對象,有很多字段。如果我嘗試使用JSON.stringify發送和排列11個對象 - 它可以正常工作(數組在服務器端接收),但是當我嘗試發送包含12個對象的數組時,會出現問題。錯誤是:400 Bad Request,並用谷歌Chrome調試器,我可以找到這個錯誤:fluxos:(unable to decode value)其中fluxos是我的數組的名稱。字符串超過ajax POST長度限制

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的代碼上的東西?

回答

4

同意Andres & Luiggi。以下是您的修改代碼的外觀:

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

});

+0

工作就像一個魅力! – lucasdc

6

你的網址很長。理論上這不應該導致任何問題,但是實際的限制取決於您使用的服務器和代理。發送請求正文上的數據而不是網址。

+3

我會添加到這個答案,如果你要在URL中的用戶查詢字符串參數發送POST請求沒有用... –

+0

我同意100%。 – Andres