PHP / Apache / AJAX – POST限制?

我试图通过ajax(jQuery)发送200万字符(非二进制string)的POST数据,它总是在PHP端出现空白。 这是我的代码:

var string = "<data string that is 2M chars long>"; $.ajax({ cache: false, type: 'POST', url: 'data.php', data: {'data_string': string} }); 

在PHP方面,我得到以下错误消息(当试图从$_POST['data_string'] )检索数据:

 Notice: Undefined index: data_string in data.php on line ... 

我已经检查了php.ini中的post_max_size ,它被设置为256M,这应该是绰绰有余? 我很难过,不知道我在做什么错…

编辑:如果我使"string"less量的数据(例如var string = 'test' )然后$_POST["data_string"]返回test ,如预期。 所以我想知道是否有某种数据限制,我在Apache2,PHP或浏览器本身? 我正在使用Google Chrome 17.0.963.79

EDIT2: memory_limit = 256M在php.ini

在php.ini中编辑3: max_input_time = -1

编辑4:var_dump($ _ POST)返回数组(0)

EDIT5:在debian上运行最新的PHP5稳定版本:PHP 5.3.3-7 + squeeze8与Suhosin-Patch(cli)(内build:Feb 10 2012 14:12:26)

您必须检查您和服务器之间的所有项目的限制参数。 代理服务器很难,如果有的话,但至less你可以检查:

阿帕奇:

  • LimitRequestBody ,默认2Gb左右,64bits可能更大,请查看错误日志了解详情。

PHP:

  • post_max_size与POST大小直接相关
  • upload_max_filesize可能是不相关的,不确定
  • max_input_time ,如果POSt时间太长
  • max_input_nesting_level如果你的数据是一个有很多子层次的数组
  • max_execution_time ,但相当确定不是这样
  • memory_limit ,因为您可能会达到超过subprocess允许的内存大小
  • max_input_vars ,如果你的数据数组有很多元素的话

如果你已经达到了编译的Apache限制,你唯一的解决scheme就是避免直接把这么大的数据块存起来,你将不得不把它分解成几块。

你也可以检查suhosin.ini设置,例如:

 suhosin.post.max_value_length = 65000 

你可能还想设置set_time_limit(0)和你的内存限制 。

编辑:你可能也想console.log(string) ; 或者console.log(string.length); 在您的请求之前validation它是否正确设置,并检查您的请求在萤火虫或开发人员工具chromesvalidation您的数据正在发送。

只需从参数名称中删除单引号!

从:

 data: {'data_string': string} 

至:

 data: {data_string: string} 
 //Adding Respond Box After Selected Field $( '[maxlength]' ).bind('click keyup', function(){ var RespondBox = '<div class="StPgRp" id="UpdateRespond"></div>'; $('#UpdateRespond').remove(); $(this).after(RespondBox); }); //Counting Maximum Characters Allowed In Selected Field $( '[maxlength]' ).bind('click keyup', function(){ var MaxLength = $(this).attr('maxlength'); var CurrentLength = $(this).val().length; var Remainder = MaxLength - CurrentLength; $('#UpdateRespond').html('You have ' + Remainder + ' characters remaining.'); }); //Checking the PHP Function if YES then send message to user $( '.Check' ).bind('click keyup', function(){ var Check = $(this).parent().children('.Check').val(); }); 

添加到您的.js文件链接到您的网页和您的sorting!