表單提交post提交后,出現數組被截斷情況的解決方法


一、場景

今天做保存專題商品列表的時候發現,前端明明有2300多條數據,但是實際服務端接受存入數據庫才166條

二、解決過程

經過調試發現前端頁面提交post請求時數據量是正確的,但到服務端只能接受到166條。

一開始以為是post請求長度超過限制,不過看了下請求內容才200多K,而post請求默認支持8M以內的數據傳輸。

於是懷疑可能是php內部配置導致的,后來百度了下果不其然發現max_input_vars這個配置項,該配置項是在php 5.3.9版本之后才加入的,目的是為了防止hash沖突。

既然如此那就改下該配置項,默認是1000,改成10000;重啟服務后發現服務端獲取到的數據量是1666,是之前的10倍,正好也是配置項調整之后的倍數。

然而前端傳的數據量是不確定的,就算把max_input_vars設置成10萬,也有可能不夠用,還是另尋他法吧。

三、最終解決方法

1、前端將數組轉換成json傳輸,即JSON.stringify(goodsList)

2、服務端接收到並解析$goodsList = json_decode($_POST['goodsList'], true);

3、測試發現前端傳過來的數據服務端都能獲取到,問題圓滿解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM