ajax提交post請求出現數組被截斷狀況的解決方法

1、場景

php post 提交數據時傳的數據時數組,沒有多數據進行序列化處理。發現傳到服務端時,部分數據丟失,查詢了資料發現php對參數個數有限制,限制在php配置文件中(max_input_vars)。php

一樣,java中也有類型的配置,不過,配置是在tomcat上邊,修改方式爲:<Connector connectionTimeout="20000" maxParameterCount="-1" maxPostSize="0" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>,經過配置maxParameterCount數據來取消限制。html

 

2、解決過程

通過調試發現前端頁面提交post請求時數據量是正確的,但到服務端只能接受到1000條左右(多是算法問題,致使不值精準的1000條)。前端

一開始覺得是post請求長度超過限制,不過測試了其餘的接口,發現Content-Length比有問題的接口數據量還大都沒有問題,惟一不一樣的就是參數個數不在一個數量級上。java

因而懷疑是否是參數個數限制置致使的,因而將數組序列化後傳遞到後臺,果真就解決了這該問題。後來百度了下果不其然發現max_input_vars這個配置項,該配置項是在php 5.3.9版本以後才加入的,目的是爲了防止hash衝突。算法

既然如此那就改下該配置項,默認是1000,改爲10000,或者更高。然而前端傳的數據量是不肯定的,就算把max_input_vars設置成10萬,也有可能不夠用。json

 

3、最終解決方法

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

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

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

 

參考:https://www.cnblogs.com/orzlin/p/5985445.html測試

相關文章
相關標籤/搜索