2016-11-21 24 views
2

我有一個JSON看起來或多或少是這樣的:如何在Google Play上的1.4.x框架使用AJAX來發布大串/ JSON

{"id":"id","date":"date","csvdata":"csvdata".....}

其中csvdata屬性是數據量很大JSON格式。 我試圖在Play中使用AJAX發佈這個JSON! Framework 1.4.x,所以我感覺就像這樣,但是當我在服務器端收到數據時,csvdata看起來像[object Object]並將其存儲在我的數據庫中。

我首先想到的解決,這是送csvdata JSON字符串格式將它存儲就像一個LONGTEXT,但是當我嘗試這樣做,我請求失敗,出現以下錯誤:

413 (Request Entity Too Large)

和播放的控制檯顯示此消息:

Number of request parameters 3623 is higher than maximum of 1000, aborting. Can be configured using 'http.maxParams'

我也嘗試添加http.maxParams = 5000 application.conf但唯一的結果是,遊戲控制檯沒什麼說的在我的數據庫中,這個字段被存儲爲空。

任何人都可以幫助我,或者建議我的問題的另一種解決方案?

非常感謝您提前。

+0

你可以使用'http.maxParams = 5000'檢查控制器中'cvsdata'字段的內容嗎? –

+0

Hi @RémiLavolée我在Eclipse上使用JPDA進行了檢查。隨着http.maxParams = 5000我的控制器收到什麼,一個空字符串,但在控制檯中我沒有錯誤消息。 –

+0

好的。我們需要知道問題來自哪裏。是否嘗試發送'csvdata'的輕型版本?你如何反序列化控制器中的json內容? –

回答

0

是否有可能將「csvdata」作爲數組發送,而不是字符串?數組中的每個元素都將是一個單獨的參數。我使用AJAX發送了100KB的字符串,但沒有運行到http.maxParams限制中。您可以使用瀏覽器的開發人員工具檢查請求主體的內容。

如果您的csvdata作爲客戶端計算機上的文件發起,那麼發送它的最簡單方式就像是一個文件。您的控制器操作如下所示:

public static void upload(String id, Date date, File csv) { 
    ... 
} 

當玩!將參數綁定到File類型,它將參數的內容寫入可讀入的臨時文件(這樣可以避免在上載大文件時耗盡內存。)File參數類型是爲正常形式設計的提交,但當瀏覽器支持一些HTML5功能(File API和表單數據)時,我已經在AJAX中使用它。