今天在做与后台交互的的过程中,发现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个字段的问题的更多相关文章

  1. php post提交超过1000个字段的时候服务器会截断多余部分

    采取将子字段转化为json的形式,合并多个字段于一个字段

  2. oracle select in超过1000条报错解决方法

    本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...

  3. 处理 Oracle SQL in 超过1000 的解决方案

    处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错.这主要是oracle考虑性能问题做的限制.如果要解 ...

  4. Oracle SQL in 超过1000 的解决方案

    处理 Oracle SQL in 超过1000 的解决方案 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项 ...

  5. 关于Highcharts数据量超过1000时无法显示问题

    今天在vue的项目中引入Highcharts,想做一个大数据量的实时刷新曲线图,发现当数据量超过1000就无法显示. 经过排查发现 Highcharts为了保证更好的性能设置了一个性能阈值检查,当数据 ...

  6. IN中超过1000处理

    后台 所有用到IN的方法,都要考虑超过1000的可能 if(cameraIds != null && cameraIds.length > 0){sql.append(" ...

  7. oracle中的in参数超过1000的解决方案

    在oracle中,使用in方法查询记录的时候,如果in后面的参数个数超过1000个,那么会发生错误,JDBC会抛出"java.sql.SQLException: ORA-01795: 列表中 ...

  8. 解决pdm打开只显示表名不显示字段的步骤

    解决pdm打开只显示表名不显示字段的方法 选中PDM 依次点击 工具-->显示参数选择-->content 下面的table ,右边勾选上columns 点击OK 选择 all symbo ...

  9. mysql的if用法解决同一张数据表里面两个字段是否相等统计数据量。

    MySQL的使用用法如下所示:格式:if(Condition,A,B)意义:当Condition为true时,返回A:当Condition为false时,返回B.作用:作为条件语句使用.mysql的i ...

随机推荐

  1. 安装PIL报错解析

    开始安装PIL PIL只支持到python2.7,我安装的是python3.6版本,所以  不支持,报错 需要下载支持自己版本的包,下载地址https://www.lfd.uci.edu/~gohlk ...

  2. Java简答题附答案

    1. Java有没有goto? 有, Goto语句在java中作为保留字, 并没有实现它. 带标号的break, continue局限于循环体中跳转 带标号的goto可以在一个函数(c语言)中任意跳转 ...

  3. js解析json格式

    function save(){ var value2 = { "china":[ {"name":"hangzhou", "it ...

  4. jquery操作滚动条滚动到指定元素位置 scrollTop

    $('.brand_t a').bind('click',function(){ if($(this).attr('title1')){ var toChar = $(this).attr('titl ...

  5. JAVA遍历map元素

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  6. java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

    ava 常用流处理工具 StreamTool ,常见的InputStream 流转字符串, 转字节数组等等 **应用场景: ** 1. 文件上传 2. js / css / img 等文件读取输出. ...

  7. 【DB_MySQL】MySQL重要知识点

    MySQL中的select语句 各子句的执行顺序 SELECT语句的处理过程 1. FROM 组装数据来源 2. WHERE筛选元组 3. GROUP BY 将满足条件的元组进行分组 4. HAVIN ...

  8. redo log日志内容备忘

    检查点是一串递增的数字. 在两个检查点之间,存在有一个MLOG_FILE_NAME的文件,里面记录着space和路径和MLOG_CHECKPOINT的一个检查点. MLOG_FILE_NAME总是在上 ...

  9. MySQLfailover错误一则

    由于公司现有主库要转移到新的主库上,所以,我打算利用MySQLfailover工具的故障转移. 1.开发把程序账号转移到新主库上 2.停止现有主库,使之进行故障转移,转移期间会自动锁表,保持数据一致性 ...

  10. Gitlab仓库搭建及在Linux/windows中的免密使用

    1. Gitlab简介 Gitlab:代码私有仓库,可以使用Git进行代码的管理. GitHub:公共仓库. GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭 ...