2013-10-01 71 views
0

我發送一個JSON array從jscript到PHP通過jQuery $.post()。它是一個3-4位數字的表格,其大小爲174 x 15(行x cols)。在檢查XHR郵政時。我可以看到所有的值如

pdata[0][] dates 
pdata[0][] Fund B1 
pdata[0][] Fund B2 
pdata[0][] Fund B3 
pdata[0][] Fund B4 
pdata[0][] Fund B5 
pdata[0][] Fund B6 
pdata[0][] Fund B7 
pdata[0][] Fund B8 
pdata[0][] Fund B9 
pdata[0][] Fund B10 
pdata[0][] Fund B11 
pdata[0][] Fund b12 
pdata[0][] Fund B13 
pdata[100][] 4/30/2005 
pdata[100][] -3.16% 
pdata[100][] -3.54% 
pdata[100][] -0.52% 

請注意,第1個索引按字母順序排序,而不是數字排序。然後我處理在PHP該數組作爲

$pdata = $_POST['pdata']; 
print_r($pdata); 

的問題是,有關數據的一半已丟失,$pdata只有大約72個單元(陣列),而不是174。我想,它關係到PHP post_max_size並將其增加到30Mb,但它沒有幫助。

還有什麼可以截斷數組?

謝謝。

+0

謝謝你們。將max_input_vars增加到15000可以解決問題。通過POST傳遞數千個變量是否是一個好主意?在服務器上傳遞一個巨大的JSON字符串並解碼爲PHP會更好嗎? – user2723490

回答

1

max_input_vars是您正在尋找的指令。

默認情況下,它是1000,與您的觀察結果相匹配(「約72個元素」=>類似71x14 + 6的東西)。

0

增加

suhosin.post.max_vars = 2048 
suhosin.request.max_vars = 2048 

在php.ini並重新啓動服務器

你也可以添加到您的.htaccess文件(無需重新啓動服務器在這種情況下) 但是,你必須 檢查

suhosin.perdir = "p" 

設置php.ini中上

您可以使用

phpinfo(); 
1

我有同樣的問題檢查的php.ini配置默認的變量,要解決它,我加入這行到我的htaccess文件。

php_value max_input_vars 15000

可以更改15000值什麼是適合您的需求。

0

我想建議您增加值按照php.ini

post_max_size = 200M 
upload_max_filesize = 200M 

您可以設置哪些是適合您的需要的價值。

注意:更改php.ini中的設置後,需要重新啓動服務器。