解决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 ...
随机推荐
- iOS面试题 第一天
今天上午,下午分别面试了两家公司.上午是一家互联网公司,气氛还比较好,是我比较喜欢的.技术这块是直接机试,主要是给了些BUG让我修复,整个过程还算顺利.下午去了一家大型的证券公司.整理技术问题如下: ...
- Java调用存储过程出现Bug,sql语法错误
因为SQL Server运行没有正常,检查了传入参数的值,发现问题,然后传入默认参数,解决了问题.
- CAS (Compare and Swap)
synchronized是悲观锁 注意:实现了CAS的有原子类(AtomicInteger,AtomicLong,等等原子类) CAS 是乐观锁,一种高效实现线程安全性的方法 1.支持原子更新操作,适 ...
- Ubuntu下Hyperledger Fabric v0.6安装部署
系统环境:虚拟机VMware Workstation中的Ubuntu 16.04LTS 1.环境准备 1.1安装Docker Docker安装命令: curl –fsSL https://get.do ...
- PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)
PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20) http://www.patest.cn/contests/pat-b-practise/1033 旧 ...
- 使用一位数组解决 1 1 2 3 5 8 13 数列问题 斐波纳契数列 Fibonacci
斐波纳契数列 Fibonacci 输出这个数列的前20个数是什么? 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 使用数组实现输出数列的前30 ...
- http post get 同步异步
下面首先介绍一下一些基本的概念---同步请求,异步请求,GET请求,POST请求. 1.同步请求从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作.也 ...
- python数据类型、字符编码、文件处理-练习
练习-字符串 # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # ) 移除 name 变量对应的值两边的空格,并输出处理 ...
- 多线程并发情况下 重复insert问题
代码逻辑: if(数据不存在){ insert(); } 线程启动后,发现数据库表中有相同的记录 解决方案 synchronized同步代码块即加同步锁,synchronized同步代码块的功能: 当 ...
- Hi3519V101 SDK安装以及开发环境搭建
Hi3519V101 Linux开发环境 1.安装Hi3519V101 SDKHi3519V101 SDK是基于Hi3519V101 DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工 ...