ajax的post提交参数长度超出限制的解决办法

1. 前端代码
 console.log("saving data=", data);  //data 是Json格式的数据,前台向后台传输的数据
    $.ajax({
        url: 'TC_Save.php',
        data: { 'data': data},
        type: 'POST',
        dataType: 'json',
        async: true,
        cache: false,
        success: function(data) {
            console.log("saved result=");
            console.log(data);   //问题是当data数据太多时 (大概50kb),后台PHP接受到的数据不全,有的变成了NULL, *此处打印出来的data与上面的data对比可知后台PHP接收到的数据不全。
            if (data['good'] == 1) {
                console.error("Saving data: done!");
            } else {
                console.error( data['error']);
            }
        },

 

        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.error("X.status=" + XMLHttpRequest.status + ", X.readyState=" + XMLHttpRequest.readyState + ", textStatus=" + textStatus);
        },
    });
 
2. 后端代码
<?php
error_reporting(0);
header('Content-Type:text/html;charset=utf-8'); 

$data = array();
$data["data"]  = array();
$data["error"] = array();
data['good'] = 0;
$data["data"] = $_POST["data"];
die(json_encode($data));
?>
 
3. 问题是当data数据太多时 (大概50kb),后台PHP接受到的数据不全,有的变成了NULL。
 
4. 解决办法:
4.1 服务器网站下面的web.config设定,增加红色的部分

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <httpRuntime requestValidationMode="2.0" maxRequestLength="102400" />
        <httpModules>
        <add name="UploadModule" type="UploadModule,UploadModule" />
        </httpModules>
    </system.web>
    <system.webServer>
        <security>
          <requestFiltering>
              <requestLimits maxAllowedContentLength="2147483647" maxUrl="40960000" maxQueryString="20480000" />
          </requestFiltering>
        </security>
    </system.webServer>
</configuration>

4.2 PHP初始化文件php.ini设定

; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 100000

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1280M

 

 

posted on 2021-02-22 18:01  骆越人  阅读(1728)  评论(0编辑  收藏  举报

导航