我发送带有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编写的。提前谢谢。
答案 0 :(得分:1)
我认为你不需要发布空元素。
替换数据:$('#form').serialize()
数据:$('#form :input[value!='']').serialize()
。
希望它适合你。
答案 1 :(得分:1)
我遇到了同样的问题。我不知道为什么,但$ .ajax trucantes将数据传递为字符串。
要解决此问题,请改为使用对象数据。
例如
$data=$('form').serialize();
$data=JSON.parse('{"' + decodeURI($data.replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}');
$.ajax({
url:$url,
data:$data,
...
});
希望这会有所帮助;)
答案 2 :(得分:0)
在完全相同的事情上浪费了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 :(得分:0)
对于在 Firefox 调试器控制台上通过 data: new FormData(this) 使用直接表单提取时发现错误请求已被截断的任何人 em>,整个数据可能实际上已经发布,错误似乎是错误的。我不得不花了几个小时才意识到 Google Chrome 没有报告错误,并且在实际检查发布的图片时,它实际上是在上传。
顺便说一下,这样的直接表单提取不需要序列化,甚至可以上传图像。