解决PHP无法接收post超过1000个字段的问题
今天在做与后台交互的的过程中,发现php对于接收的POST有一个限制,超出1000个字段之后便无法接收,项目要求在不改变PHP配置的情况下通过前端方式解决,通过分析并且网上差一些大牛的资料终于找到了解决方案,下面进行介绍:
首先,由于post的数据太多会导致PHP无法接收,那么解决思路就是将form表单中要进行提交的数据封装为一个json字段提交到后台,为了其他表单也会出现这样的问题,则将该方法封装为jQuery扩展的一个方法:
// submitButtonId 提交按钮id,formID表单id,formUrl表单提交url,
setSerializeForm: function(submitButtonId, formID, formUrl, callback, clickFn)
{
if($.isFunction(clickFn))
{
clickFn();
} var $submitButton = $(submitButtonId);
$(document).on('click', submitButtonId, function(event) {
$submitButton.val(v.submitting);
$submitButton.attr('disabled', true); // serializeArray() 方法通过序列化表单值来创建对象数组
// JSON.stringify 将任意的 JavaScript 值序列化成 JSON 字符串
var jsonData = $(formID).serializeArray();
var jsonStr = JSON.stringify(jsonData); $.post(formUrl, {'jsonStr':jsonStr}, function(response){
if(response.result == 'success'){
$submitButton.popover({trigger:'manual', content:response.message, placement:'right'}).popover('show');
$submitButton.next('.popover').addClass('popover-success');
if(response.locate){
setTimeout(function(){location.href = response.locate}, 1000);
}
} else {
$submitButton.attr('disabled', false);
$submitButton.val(v.saveOrder); if($.type(response.message) == 'object')
{
$.each(response.message, function(key, value)
{
var errorOBJ = '#' + key;
var errorLabel = key + 'Label'; if (typeof value == 'string' || Object.prototype.toString.call(value).indexOf('Array')>0)
{
var errorContent = $.type(value) == 'string' ? value : value.join(';');
var errorMSG = '<span id="' + errorLabel + '" for="' + key + '" class="text-error red">';
errorMSG += errorContent;
errorMSG += '</span>';
}
else
{
var errorContent = '';
for (var error in value)
{
errorContent += value[error];
errorContent += ';'
}
errorContent.replace('。','')
var errorMSG = '<tr id='+ errorLabel + '><td colspan=13><span for="' + key + '" class="text-error red">';
errorMSG += errorContent;
errorMSG += '</span></td></tr>';
} $('#' + errorLabel).remove(); var $errorOBJ = $(errorOBJ);
if($errorOBJ.closest('.input-group').length > 0)
{
$errorOBJ.closest('.input-group').after(errorMSG)
}
else if(Object.prototype.toString.call(value).indexOf('Object')>0)
{
$errorOBJ.after(errorMSG);
}
else
{
$errorOBJ.parent().append(errorMSG);
}
$errorOBJ.css('margin-bottom', 0);
$errorOBJ.css('border-color','#953B39');
if($errorOBJ[0].id.indexOf('products') >= 0)
{
var index = parseInt($errorOBJ.index("tr[id *= 'products']")) - errorLabelTotal;
errorLabelTotal++;
var $actionItem = $('.actionList-item:eq('+index+')');
$actionItem.css('margin-bottom','28px');
} $(errorOBJ).change(function()
{
$('#' + errorLabel).remove();
});
});
} else {
$submitButton.popover({trigger:'manual', content:response.message, placement:'right'}).popover('show');
$submitButton.next('.popover').addClass('popover-danger');
function destroy(){$submitButton.popover('destroy')}
setTimeout(destroy,3000);
}
}
if($.isFunction(callback)) return callback(response);
}, 'json');
});
}
在调用该方法时只需要通过以下方式:
$.setSerializeForm('#submitOrder', '#orderAjaxForm', v.formUrl);
解决PHP无法接收post超过1000个字段的问题的更多相关文章
- php post提交超过1000个字段的时候服务器会截断多余部分
采取将子字段转化为json的形式,合并多个字段于一个字段
- oracle select in超过1000条报错解决方法
本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...
- 处理 Oracle SQL in 超过1000 的解决方案
处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错.这主要是oracle考虑性能问题做的限制.如果要解 ...
- Oracle SQL in 超过1000 的解决方案
处理 Oracle SQL in 超过1000 的解决方案 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项 ...
- 关于Highcharts数据量超过1000时无法显示问题
今天在vue的项目中引入Highcharts,想做一个大数据量的实时刷新曲线图,发现当数据量超过1000就无法显示. 经过排查发现 Highcharts为了保证更好的性能设置了一个性能阈值检查,当数据 ...
- IN中超过1000处理
后台 所有用到IN的方法,都要考虑超过1000的可能 if(cameraIds != null && cameraIds.length > 0){sql.append(" ...
- oracle中的in参数超过1000的解决方案
在oracle中,使用in方法查询记录的时候,如果in后面的参数个数超过1000个,那么会发生错误,JDBC会抛出"java.sql.SQLException: ORA-01795: 列表中 ...
- 解决pdm打开只显示表名不显示字段的步骤
解决pdm打开只显示表名不显示字段的方法 选中PDM 依次点击 工具-->显示参数选择-->content 下面的table ,右边勾选上columns 点击OK 选择 all symbo ...
- mysql的if用法解决同一张数据表里面两个字段是否相等统计数据量。
MySQL的使用用法如下所示:格式:if(Condition,A,B)意义:当Condition为true时,返回A:当Condition为false时,返回B.作用:作为条件语句使用.mysql的i ...
随机推荐
- MVC简单登陆验证
配置文件: <system.web> <authentication mode="Forms"> <!-- 如果验证失败就返回URL的指定界面,设置c ...
- Asp.Net Core 进阶(三)—— IServiceCollection依赖注入容器和使用Autofac替换它
Asp.Net Core 提供了默认的依赖注入容器 IServiceCollection,它是一个轻量级的依赖注入容器,所以功能不多,只是提供了基础的一些功能,要实现AOP就有点麻烦,因此在实际工作当 ...
- Spring-2-官网学习
spring生命周期回调 结合生命周期机制(官网提供) 1.实现InitializingBean接口重写void afterPropertiesSet() throws Exception;方法 使用 ...
- Springboot邮箱接口(使用个人邮箱发送邮件)
近期项目使用邮件验证,这里使用个人邮箱进行测试,记录开发笔记 SpringBoot自带短信接口 maven pom.xml 引入: <dependency> <groupId> ...
- Paxos算法与Zookeeper分析,zab (zk)raft协议(etcd) 8. 与Galera及MySQL Group replication的比较
mit 分布式论文集 https://github.com/feixiao/Distributed-Systems wiki上描述的几种都明白了就出师了 raft 和 zab 是类似的,都是1.先选举 ...
- ZOJ Monthly, January 2019-Little Sub and Pascal's Triangle
这个题的话,它每行奇数的个数等于该行行号,如果是0开始的,就该数的二进制中的1的个数,设为k,以它作为次数,2k就是了. #include <stdio.h> int main() { i ...
- vue源码构建代码分析
这是xue源码学习记录,如有错误请指出,谢谢!相互学习相互进步. vue源码目录为 vue ├── src #vue源码 ├── flow #flow定义的数据类型库(vue通过flow来检测数据类型 ...
- CSS3-transform-style
transform-style属性 transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现.他主要有两个属性值:flat和preserve-3d. transfor ...
- back to back
back to back 传输,以前在AMBA bus中遇到过,FIFO设计中再次遇到. 查了资料大概意思是:直接传输,不依靠中介,连续多次传输.
- 【linux】【网络安全】linux中怎样关闭ICMP回应功能
引用自:http://blog.csdn.net/qq844352155/article/details/49700121 linux中怎样关闭ICMP回应功能 输入: echo ...