今天做保存專題商品列表的時候發現,前端明明有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、測試發現前端傳過來的資料服務端都能取得到,問題圓滿解決