【问题标题】:Posting form data with Ajax but post data gets truncated at server使用 Ajax 发布表单数据,但发布数据在服务器上被截断
【发布时间】:2013-01-29 16:54:25
【问题描述】:

我正在发送带有 2k+ 参数的表单数据,但服务器只收到不到一半。

$.ajax({
    url: 'inner.php?option=param',
    type: 'POST',
    data: $('#form').serialize(),
    dataType: "text",
    success: function(data) {
        //success action
    },
    error:function (xhr, ajaxOptions){
        //error action
    }  
});

有些参数是由 Ajax 发布的——

1190583_1306134[]   1
1226739_1343934[]   

我的应用程序是用 PHP 编写的。提前致谢。

【问题讨论】:

  • 如果你正在使用 apache,LimitRequestBody 是什么?
  • 我发现如果POST数据太大,PHP不会解析它。所以你要么得到一切,要么一无所获。您确定收到的是部分请求吗?
  • 检查您的 php.ini 文件并找到 post_max_size
  • 使用 dataType 作为 json 并将这些数据编码到您的 inner.php 文件中
  • @user1190992:最初LimitRequestBody设置为0,我已将其更改为102400。但仍然没有成功。

标签: php forms jquery post


【解决方案1】:

我认为你不需要发布 空元素

替换数据:$('#form').serialize()

有数据:$('#form :input[value!='']').serialize()

希望它对你有用。

【讨论】:

  • 您的解决方案有效,但我的问题没有得到解答:(
【解决方案2】:

刚刚在完全相同的事情上浪费了 2 小时 - php 后端中的部分 $_POST 数据(~3500 中的~1000)。

在 apache 日志中找到这个:

Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0, referer: http://app1.local/full_path

在 php.ini 中取消注释 max_input_vars 已经足够了,将其更改为 10000 并重新启动 apache。在那之后一切都在工作;)

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。我不知道为什么,但是 $.ajax trucantes 将数据作为字符串传递。

    要解决这个问题,请改用对象数据。

    例如

    $data=$('form').serialize();
    $data=JSON.parse('{"' + decodeURI($data.replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}');
    $.ajax({
           url:$url,
           data:$data,
           ...
    });
    

    希望这会有所帮助;)

    【讨论】:

      【解决方案4】:

      对于在 Firefox 调试器控制台上通过 data: new FormData(this) 使用直接表单获取时发现错误 Request has been truncated 的任何人 em>,实际上可能已经发布了整个数据,并且错误似乎是错误的。我花了几个小时才意识到 Google Chrome 没有报告错误,并且在实际检查发布的图片时,它实际上正在上传。

      顺便说一下,直接取表不需要序列化,甚至可以上传图片。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2018-03-08
        • 2021-01-17
        • 1970-01-01
        相关资源
        最近更新 更多