如何使用post请求将非常长的字符串从js传递给php?

时间:2016-07-07 10:33:47

标签: javascript php jquery mysql ajax

我有一个由jQuery和php生成的大型html表页面。 在此页面中有一个按钮,用于在Excel中导出表。 当我单击此按钮时,脚本会准备字符串并向PHP发送POST请求。

发送的字符串总共有大约60000个字符。 当我在php页面中$_POST时,php服务器崩溃了。

我已经通过以下方式更改了php.ini文件:

max_input_vars = 15000
memory_limit = -1
upload_max_filesize = 100M
max_file_uploads = 20

这仍然不起作用。

有一些方法或解决方法可以解决此问题吗? 我试着修改我的代码很多时间。

这是代码:

JAVASCRIPT AJAX请求

function esporta(tipo,id,header,dati){
    var dataString = "id="+id;

    if(tipo == "excel"){
        if(header != ""){
            dataString += "&header="+header;
        }else{
            dataString += "&header=vuoto";
        }

        dataString += "&dati="+dati;
    }

    if($.trim(id).length>0){
        $.ajax({
            type: 'POST',
            url: 'lib/excel-export.php',
            data: dataString,
            cache: false,
            beforeSend: function(){ 
                $('.se-pre-con').fadeIn('slow');
            },
            success: function(data){
                $('.se-pre-con').fadeOut('slow');
                if(data){
                    if(data == 'errore'){
                        alert('Errore!');
                    }else{
                        document.location = "lib/download.php?nomefile="+data;
                    }
                }else{
                    alert('Errore! Mancata restituzione dei dati!');
                }
            }
        }); 
    }
}

PHP

...
$sheets = $wkb->Worksheets(1); #Select the sheet
$sheets->activate; #Activate it

$postheader = $_POST['header'];
$postdati = urldecode($_POST['dati']);

$header = explode(";",$postheader);
$dati = explode(";",$postdati);
...

以下代码

$postdati = urldecode($_POST['dati']);

崩溃服务器(如果我注释掉这一行,服务器不会崩溃)。 在excel中只有30000个字符。

请注意,我无法在PHP页面中执行数据库查询。我必须从该表中获取数据。

我在本地PC上使用appserver.io网络服务器。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

根据字符编码,60,000个字符仅为60KB或更多一点 你检查了php.ini的post_max_size指令吗?

来自php.ini的评论:

  

PHP将接受的POST数据的最大大小。   其值可能为0以禁用限制。如果禁用POST数据读取,则忽略它   通过enable_post_data_reading。   http://php.net/post-max-size