2011-10-14 42 views
4

我在客戶端有很多大部分數據由大數組組成,我需要將這些信息返回給服務器,並且能夠輕鬆解析它。我在前端使用jQuery,在後端使用PHP(CodeIgniter)。將大量客戶端數據傳遞到服務器的最佳做法是什麼?

現在我只是使用jQuery $ .post發佈一個巨大的數組。這是一個好主意,還是應該使用幾個較小的?

另外,我應該使用jQuery的ajax方法還是有比這更好的東西?

+0

多大是你的 –

+0

它可以達到1000個元素 –

回答

1

如果您可以將所有數據合併爲一篇文章,那絕對是您的選擇。瀏覽器,尤其是IE瀏覽器(gag),會在您將同時發生的XH請求數量超過同一臺服務器的情況下窒息。太多的時候一般意味着超過2.

基本上,發送數據到服務器的最佳做法可以概括爲:「儘可能少的請求儘可能少」。你如何處理數據取決於你。

如果你真的通過jQuery發送很多東西,可以考慮用類似jsend(一個壓縮的jQuery插件,用PHP對應的解壓縮)壓縮它。

2

最大發布大小將由服務器的PHP.INI文件中的post_max_size設置管理。默認設置是8MB,這對於發佈數據來說是很大的空間。請記住,可能有其他因素影響該限制(memory_limit等)。

簡而言之,如果你的1000個元素的尺寸非常小,那麼使用jQuery的常規帖子可能是一個合適的方法。

0

達林回答類似的問題在這裏:Sending large data to server

使用POST HTTP動詞,而不是GET的:

$.ajax({ 
    url: '/foo', 
    type: 'POST', 
    data: { value: someVariableThatCouldBeHuge }, 
    success: function(result) { 
     // TODO: process the results 
    } 
}); 

或等價的:

$.post('/foo', { value: someVariableThatCouldBeHuge }, function(result) { 
    // TODO: process the results 
}); 

佩卡建議序列數據和休息如果帖子不是一個選項,則分成塊:Sending a large parametrized data set as a GET request

+0

這正是我正在做的。 –

0

您可以使用FORMDATA: 「大陣列」

var formData = new FormData(); 
formData.append('filename', filename); 
formData.append('data', data); 
$.ajax({ 
    url: "FileUploadServlet", 
    type: "POST", 
    data: formData, 
    cache: false, 
    contentType: false, 
    processData: false}); 
相關問題