2013-12-09 24 views
0

我使用jQuery ajax請求向服務器發佈了四個JSON對象。每個對象最多可以包含30k個字符。當所有參數都很大時,最後一個參數甚至最後兩個參數都不會顯示在服務器上。儘管參數較小,但一切正常。在查詢字符串中使用json時發佈大量數據的問題

在chrome的網絡選項卡中,我可以看到所有參數的全部內容。在小提琴手中,我看到了整個參數,但沒有在服務器上顯示的參數將沒有名稱。

提琴手

fiddler snippit

我的請求的結構如下:

var formData = "json0=" + JSON.stringify(json0) + "json1=" + JSON.stringify(json1); //etc 
$.ajax({ 
    type: 'POST', 
    url: url, 
    data: formData, 
    success: function (result) {}, 
    error: function() {} 
}); 

我不認爲會有一則訊息的限制,但它的作用就像數據由於某種原因被截斷。服務器端我在Java中使用ParameterAware來檢索數據,但我認爲問題是在它到達那裏之前,因爲fiddler沒有參數的名稱。

+1

嘗試傳球你的formdata作爲一個對象而不是一個字符串的數據參數。 –

+0

什麼是服務器?您是否配置了任何POST限制,例如http://stackoverflow.com/q/2943477/438992? –

回答

2

查詢字符串不是爲大量數據的取得,你應該通過你的數據到你的Ajax調用中的對象:

$.ajax({ 
    type: 'POST', 
    url: url, 
    dataType: "JSON", 
    data: { 
     json0: json0, 
     json1: json1 
     // etc 
    }, 
    success: function (result) {}, 
    error: function() {} 
}); 

Have a look at this article discussing the maximum length of query strings.

的jQuery AJAX文檔:http://api.jquery.com/jQuery.ajax/

+0

雖然這工作,它不是問題。我不想這樣做,因爲我喜歡一致性,我的帖子中的範例在很多地方都有使用。事實證明,有一些奇怪的字符序列破壞了queryString的格式。在js中編碼並在服務器上解碼後,一切都很好。 – user1134179