解决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 ...
随机推荐
- 自动发表QQ空间说说
require("gb2312toutf8") local http = require "socket.http" local surl = "ht ...
- MAC进入文件夹快捷键
common + O common+up common+Down shift + common +G
- python之道05
1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry&q ...
- Mysql插入中文时提示:ERROR 1366 (HY000): Incorrect string value: '\xE5\x8F\xB0\xE5\xBC\x8F...' fo
Mysql插入数据时提示:ERROR 1366 (HY000): Incorrect string value: ‘\xE5\x8F\xB0\xE5\xBC\x8F…’ fo 分析如下: 首先通过语句 ...
- javase(13)_网络编程
一.概述 1.网络编程的核心是IP.端口(表示应用程序).协议三大元素 2.网络编程的本质是进程间通信 3.网络编程的2个主要问题:1是定位主机,2是数据传输 二.网络通信的概念 1.网络通信协议 计 ...
- 响应式web设计视图工具及插件总结----20150113
响应式web设计可以说火不火是迟早的,下面就对于最开始的视口调试的方法汇总,希望有好的方法大家一起交流. 1.火狐:从Firefox升级到29.0之后就不直接支持Firesizer了. 先安装Add- ...
- 【树链剖分 差分】bzoj3626: [LNOI2014]LCA
把LCA深度转化的那一步还是挺妙的.之后就是差分加大力数据结构了. Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep ...
- 【Java_多线程并发编程】基础篇—线程状态及实现多线程的两种方式
1.Java多线程的概念 同一时间段内,位于同一处理器上多个已开启但未执行完毕的线程叫做多线程.他们通过轮寻获得CPU处理时间,从而在宏观上构成一种同时在执行的假象,实质上在任意时刻只有一个线程获得C ...
- centos7系统root无法通过su切换到某个普通用户
[root@test ~]# su webappsu: failed to execute /bin/bash: Resource temporarily unavailable [root@test ...
- lnmp一键安装包 虚拟主机问题
lnmp一键安装包淌过的坑 --手动虚拟主机配置 安装一键包的时候教程 官网也有虚拟主机的教程 一下示例: 后来自己手动去做 就遇到了一个大家都遇到的问题 及时安装让nginx支持解析PHP脚本解析 ...