在一個質量核查的項目中,有一項添加核查數據的功能,比較簡單就是提交表單數據到后臺,處理一下存進數據庫就可以了,但是!在本地測試聽正常的情況下,放到了服務器上面,卻出現了一些問題,在提交的數據超過三十條的時候,后臺接收的數據缺失了,少了一部分,這就很難受,然后我就直接判定是服務器設置問題,應該是服務器設置的json提交數據最大值問題,這里用的服務器環境是windows 2008R2 iis服務器,在 web.config文件中設置
OK設置完成,繼續提交測試,結果卻是完全沒有效果,太難了。然后思路斷了,不知道怎么解決,找了很多文檔也沒有解決思路,最后的最后,看著數據越看越奇怪,如果是json數據被截斷了只發送了一般的話,php后臺接收的數據應該格式不正確才對,格式不正確怎么還能轉換成數組格式的數據打印。接著就去頁面查看提交的數據,自己計算了一下如果重復的字段名也算一個字段的話,那么提交的數據字段大概正好在1000個字段的時候斷掉了,所以提交的數據不全,但是還能打印出來正確的格式,很明顯,不是json數據最大值的問題,而是表單提交最大變量值的問題,一直認為他們的name名稱都是一樣的,所以跟這個最大變量值應該沒關系,現在才算知道用ajax提交的表單,一個input就是一個變量值,PHP默認的是1000最大值,所以出現了這種情況。

如何查看提交了多少表單數據,最方便的方法就是打開控制臺,在NETWORK中找到你提交表單的連接,如上圖。在右邊的headers中就有表單數據FormData,我這提交了一條數據input的變量就是26個,所以提交超過20條數據就會報錯,知道了問題所在,解決起來就非常快了,直接修改php.ini文件中的 max_input_vars,默認的是1000,這里根據項目需要自行調整就可以了。修改完后重啟服務再次提交表單,沒有報錯,數據也沒有丟失,完美解決。



