0

我正在发送带有 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 编写的。提前致谢。

4

4 回答 4

1

只是在完全相同的事情上浪费了 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

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

于 2014-10-15T21:08:10.093 回答
1

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

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

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

希望它对你有用。

于 2013-01-29T17:55:03.967 回答
1

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

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

例如

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

希望这会有所帮助;)

于 2015-04-22T13:43:01.810 回答
0

对于任何发现错误Request has been truncated when using direct form Pickup via data: new FormData(this) on the Firefox debuger-console的任何人,整个数据实际上可能已经发布并且错误似乎是错误的。我不得不花了几个小时才意识到谷歌浏览器没有报告错误,并且在实际检查发布的图像时,它实际上正在上传。

顺便说一句,这样的直接表单拾取不需要序列化,甚至可以上传图像。

于 2021-02-13T05:47:56.687 回答