2015-06-01 48 views
2

似乎當我.post()一個大數組中大量的信息被刪除。在下面的代碼片段中,第一個.html()顯示所有數組數據,而PHP的返回結果僅顯示一部分數據。POST數據被剪短

的JavaScript:

$('.inner').html(JSON.stringify(dbData)); 
$.post("test.php", {'filename' : filename, 'dbData' : dbData}, function(result) { 
     $('.inner').html(result); 
}); 

PHP:

ini_set('display_errors', 'On'); 

$filename = $_POST['filename']; 
$dbData = $_POST['dbData']; 

$file = $myfile = fopen($filename, 'w'); 

echo json_encode($dbData); 

php.ini中具有的post_max_size = 8M,我通過發送數據超過800萬少了很多。

編輯:數組中的數據似乎在某個點後被切斷。沒有錯誤。

+0

這可能是因爲你的php.ini文件中的數據大於'post_max_size'。你也可以檢查你的'max_upload_size'配置。另一種方法是檢查錯誤日誌,看看是否可以從那裏發現問題。另外,確保你正在查看正確的'php.ini'文件(你可能有多個文件)。您還應該注意到,在修改'php.ini'中的任何設置後,您需要重新啓動Web服務器才能使更改生效。 – Cyclonecode

+0

發佈時產生的錯誤是什麼?您無需檢查這些POST元素是否存在。 '$ filename = isset($ _ POST ['filename'])?$ _ POST ['filename']:「」; $ dbData = isset($ _ POST ['dbData'])?$ _ POST ['dbData']:「」; if(!empty($ filename)&&!empty($ dbData)){...}' – Twisty

+0

沒有錯誤,數組的全部值都丟失, – FuzzyStatic

回答

2

嘗試增加max_input_vars的值。我相信默認是1000.

我已經遇到過這個問題幾次,其中一個表格是爲一個數據庫表中的每一行生成一個或多個字段,當它增長到幾百行時,表單域被砍掉。

雖然您似乎只使用一個POST var,$_POST['dbData'],但如果AJAX請求將dbData的每個元素作爲單獨的&dbData[]=...參數發送,則會被計數多次。

+0

非常感謝!這解決了我的問題! – FuzzyStatic