GVKun编程网logo

PHP / Apache / AJAX-POST限制?(php发送ajax请求)

5

想了解PHP/Apache/AJAX-POST限制?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于php发送ajax请求的相关问题,此外,我们还将为您介绍关于ajax–如何克服XHRFFP

想了解PHP / Apache / AJAX-POST限制?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于php发送ajax请求的相关问题,此外,我们还将为您介绍关于ajax – 如何克服XHR FF POST大小限制?、ajaxform或者ajaxpost,导致echo / var_dump 打断php程序的运行?、Ajax中的POST数据大小是否有限制?、apache - php post不能获取 在线等 着急的新知识。

本文目录一览:

PHP / Apache / AJAX-POST限制?(php发送ajax请求)

PHP / Apache / AJAX-POST限制?(php发送ajax请求)

我正在尝试通过ajax(jQuery)发送200万个字符(非二进制字符串)的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 ...

我已经检查了post_max_sizephp.ini,并将其设置为256M,这是否足够?我很困惑,不确定自己在做什么错…

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

EDIT2:memory_limit = 256M在php.ini中

EDIT3:max_input_time = -1在php.ini中

EDIT4:var_dump($ _ POST)返回数组(0)

EDIT5:在debian squeeze上运行最新的稳定版PHP5:具有Suhosin-Patch(cli)的PHP 5.3.3-7 +
squeeze8(内置:2012年2月10日14:12:26)

答案1

小编典典

您必须检查您与服务器之间所有项目的限制参数。代理服务器非常难(如果有的话),但是至少您可以检查:

阿帕奇:

  • LimitRequestBody,默认情况下约为2Gb,对于64位可能更大,请查看错误日志以获取详细信息。

PHP:

  • 与POST大小直接相关的post_max_size
  • 可能不相关的upload_max_filesize不确定
  • max_input_time,如果POSt花费的时间太长
  • max_input_nesting_level,如果您的数据是具有很多子级别的数组
  • max_execution_time,但可以肯定不是
  • memory_limit,因为您可能超出了子进程允许的内存大小
  • max_input_vars,如果您的数据数组包含许多元素

如果您已达到Apache的已编译限制,则唯一的解决方案是避免直接处理如此大数据块的POSt,您必须将其分成几部分。

ajax – 如何克服XHR FF POST大小限制?

ajax – 如何克服XHR FF POST大小限制?

我的XHR POST REQUEST被切断了.当我尝试重新加载我的页面时,信息丢失了. Firebugs发送以下消息:

Firebug request size limit has been reached by Firebug.

我的问题是:我的选择是什么?

>如果我在标题中声明content.length,它会工作吗?
>我在我的apache配置文件中添加了一行并重新启动它:LimitRequestBody 0
>我增加了mysql配置文件中传输文件的大小

或者这是一个浏览器问题?

我能想到的唯一解决方案是将数据切成碎片并逐个传输数组,但我不喜欢这个想法.根据萤火虫的内容长度为91691.

有什么建议?

解决方法

您只需要修改Firebug设置.在浏览器的地址栏中转到about:config,然后查找选项extensions.firebug.ne​​tdisplayedPostBodyLimit.

您应该增加其值以查看非截断的请求.例如,将其设置为65535.

在这里,您可以找到许多您可能想要更改的Firebug选项:http://getfirebug.com/wiki/index.php/Firebug_Preferences

ajaxform或者ajaxpost,导致echo / var_dump 打断php程序的运行?

ajaxform或者ajaxpost,导致echo / var_dump 打断php程序的运行?

一个很奇怪的事情,页面有个链接xxx,使用ajax, 点击之后转到在thinkphp的controller,我在这个controller里面加了echo或者var_dump想看一些参数值,结果不执行了,页面不会跳转了。 把echo 或 var_dump去掉,就执行成功了。

不明白这个为什么,难道是执行过程不能把打断?

立即学习“PHP免费学习笔记(深入)”;

如果是ajax导致的,请问如何查看controller里的数据呢?

回复内容:

一个很奇怪的事情,页面有个链接xxx,使用ajax, 点击之后转到在thinkphp的controller,我在这个controller里面加了echo或者var_dump想看一些参数值,结果不执行了,页面不会跳转了。 把echo 或 var_dump去掉,就执行成功了。

不明白这个为什么,难道是执行过程不能把打断?

立即学习“PHP免费学习笔记(深入)”;

如果是ajax导致的,请问如何查看controller里的数据呢?

不会不会不会

不会不会不会

这个跟你在ajax对返回结果的处理有关

echo输出内容了啊

目前不知道你的页面代码,如果是ajax请求controller,那么问题应该是你echo了内容,导致返回的不是json格式的信息,页面无法处理,所以没什么反应了

会的,ajax调试推荐用firephp或者socketlog

不会 继续debug

echo输出的内容使json无法正常解析。

ajax用了json类型,所以echo会破坏json格式,造成js解析不了,其实是有数据返回了的,可以打开浏览器的“元素审查”就是开发者工具抓包看响应

不会的。应该是数据格式的问题。

估计是楼主用的ajax的原因,因为不echo数据的时候,返回的数据是正常的,跳转也是在success成功后进行跳转,而echo后,返回的数据则不正常,就没执行跳转

Ajax中的POST数据大小是否有限制?

Ajax中的POST数据大小是否有限制?

我正在尝试使用jQuery Ajax将页面中的数据数组发送到MVC Action。这是我的jQuery代码:

$('#btnSave').click(
  function () {
    result = [];
    $('#tblMatters tbody tr.mattersRow').each(function () {
      if (!($(this).hasClass('warning'))) {
        var item = {};
        if ($(this).find('td.qbmatter > div.dropdown').length > 0) {
          item.QBDescription = $(this).find('td.qbmatter > div.dropdown > a').text();
        } else {
          item.QBDescription = $(this).find('td.qbmatter').text();
        }
        var id = $(this).find("td:first > a").text();
        item.Narrative = $("#collapse" + id).find("div.scrollCell").text();
        item.WorkDate = $(this).find('td.workDate').text();
        item.Hours = $(this).find('td.hours').text();
        item.Person = $(this).find('td.person').text();
        if ($(this).find('td.rate > div.dropdown').length > 0) {
          item.Rate = $(this).find('td.rate > div.dropdown > a').text();
        } else {
          item.Rate = $(this).find('td.rate').text();
        }
        item.Amount = $(this).find('td.amount').text();
        result.push(item);
      }
    });
    var originalRecords = $("#tblSummary tr.summaryTotalRow td.summaryOriginalRecords").text();
    var originalHours = $("#tblSummary tr.summaryTotalRow td.summaryOriginalHours").text();
    var excludedHours = $("#tblSummary tr.summaryTotalRow td.summaryExcludedHours").text();
    var totalHours = $("#tblSummary tr.summaryTotalRow td.summaryTotalHours").text();
    $.ajax({
      url: "/Home/SaveQBMatter",type: "POST",data: JSON.stringify({ 'Matters': result,'originalRecords': originalRecords,'originalHours': originalHours,'excludedHours': excludedHours,'totalHours': totalHours }),dataType: "json",traditional: true,contentType: "application/json; charset=utf-8",success: function (data) {
        if (data.status == "Success") {
          alert("Success!");
          var url = '@Url.Action("Index","Home")';
          window.location.href = url;
        } else {
          alert("Error On the DB Level!");
        }
      },error: function () {
        alert("An error has occured!!!");
      }
    });
});

让我解释一下。我有一个动态生成的HTML表,我需要将此数据存储到数据库中。在jQuery中,我遍历表有一个循环,我将result数组中每一行的数据存储起来。然后,我使用Ajax将这些数据传递到MVC
Action中。

这是我的问题开始的地方…我已经意识到有时会按预期进行,但是有时我会从Ajax中收到错误消息。alert("An error has occured!!!");现在我已经了解到,当result数组变大时会发生此错误。例如:如果包含100-150个项目>一切正常,但是当数量超过〜150个时>错误。

Ajax中是否有任何POST限制?如何设置任何尺寸?我真的需要这个功能!请帮忙!

我的ActionResult代码:

public ActionResult SaveQBMatter(QBMatter[] Matters,string originalRecords,string originalHours,string excludedHours,string totalHours) {
  DBAccess dba = new DBAccess();
  int QBMatterID = 0;
  int exportedFileID = 0;
  foreach (QBMatter qb in Matters) {
    dba.InsertQBMatter(qb.QBDescription,qb.Narrative,qb.WorkDate,qb.Person,qb.Hours,qb.Rate,qb.Amount,ref QBMatterID);
  }
  ExcelTranslator translator = new ExcelTranslator();
  translator.CreateExcelFile("",Matters,originalRecords,originalHours,excludedHours,totalHours);
  return Json(new { status = "Success",message = "Passed" });
}

更新:找到了解决方案

JSON的最大长度!我需要增加这个值。在web.config中添加以下内容:

<appSettings>
  <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>

apache - php post不能获取 在线等 着急

apache - php post不能获取 在线等 着急

代码换了服务器之后$post请求就获取不到,所有超全局变量都获取不到,包括$_querst,文件位置和代码都没问题,以前的服务器上都能用。新服务器是用yum安装的,我就改变了一下apache的默认路径。打印$_post数组页面空白。
应该是服务器禁用了post读取,也有可能是我改过路径,这个路径下不允许读取post。请大神帮忙解决一下。这是phpinfo
apache - php post不能获取 在线等  着急

回复内容:

代码换了服务器之后$post请求就获取不到,所有超全局变量都获取不到,包括$_querst,文件位置和代码都没问题,以前的服务器上都能用。新服务器是用yum安装的,我就改变了一下apache的默认路径。打印$_post数组页面空白。
应该是服务器禁用了post读取,也有可能是我改过路径,这个路径下不允许读取post。请大神帮忙解决一下。这是phpinfo
apache - php post不能获取 在线等  着急

解决了,php版本的问题

图片太多没看完
看下权限问题 不行切换下php版本 再不行 重新安装下php环境 都不能post还玩什么

今天的关于PHP / Apache / AJAX-POST限制?php发送ajax请求的分享已经结束,谢谢您的关注,如果想了解更多关于ajax – 如何克服XHR FF POST大小限制?、ajaxform或者ajaxpost,导致echo / var_dump 打断php程序的运行?、Ajax中的POST数据大小是否有限制?、apache - php post不能获取 在线等 着急的相关知识,请在本站进行查询。

本文标签: