1. 程式人生 > >php ajax提交post請求出現陣列被截斷情況的解決方法

php ajax提交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、服務端接收到並解析 g o o d s

L i s t = j s o n d e c o d e
( _POST[‘goodsList’], true);

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