目录
问题描述:
今天客户反应了一个问题,平常提交的数据量较小,可以直接提交。但是后来提交的数据量大了之后始终提交不了。后台查找订单数据也查不到,居然毛都查不到,提交不了,肯定订单数据是没有。
分析接收的数据:
先看发送的数据,仔细查看了没毛病啊。
接收的数据:
仔细查看,发现接收的数据到了最后居然不完整,后面的都没有了。
解决过程:
(1)、检查ajax端提交方式,确认是 post。
(2)、检查 php 配置文件中关于 post 数据量限制的选项,发现设置的都很大,这点数据根本没达到上限啊 。
(3)、我使用的是apache2, phpstudy版的有个参数,但是感觉不太挨边。
(4)、网上找资料,大多数人的解决办法都是设置 php 参数,没有找到符合要求的,没办法,自己研究吧。
解决办法:
(1)、改造 ajax 端上传参数样式:
let str = JSON.stringify(o);
将此对象参数变为 JSON 格式的。
let params = {"pm" : str};
重新组装,再次传递。
(2)、改造 php 后台端的
首先变成 JSON 格式传送后,前端传过来的json数据有时候会被转化成
$str='[{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":"http://shimao-smt.oss-cn-hangzhou.aliyuncs.com/1539862260910574983338757651936.jpg"}]';
//json_decode($str);会将json字符串转化成object对象形式, json_decode($str,true);则会转化成数组
这个时候使用 json_decode($str,true);是不会成功的,只会输出null,这个时候就需要转化被编译的单双引号了。
echo htmlspecialchars_decode($str);
$str将会被转化成正常的json字符串,如
$str=[{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":""},{"srctype":"0","srcurl":"http://shimao-smt.oss-cn-hangzhou.aliyuncs.com/1539862260910574983338757651936.jpg"}]
这个时候就可以使用 json_decode($str,true);将其转化成数组了;
返回过来将单双引号咋转化成html格式化
使用php函数 htmlspecialchars($str);
这样改造完成之后,再次查看接收的效果。
这下数据都能出来。