首页 > 其他分享 >解决ajax请求参数过多导致参数被截断的问题

解决ajax请求参数过多导致参数被截断的问题

时间:2024-05-15 12:09:27浏览次数:20  
标签:截断 ajax 参数 sn date data payload

最近发现了个问题:ajax post请求查询参数数量动态变化有200-250000个,当参数超过一定数量N时,post传到后台接的参数就只有N个,多出的参数都没附到请求中,这也是奇怪的事情,浏览器对参数的个数有限制。

js

  const payload = { date: "2024-05-10", sn: [] };
  for (let i = 1; i < 10000; i++) {
    payload["sn"].push("aaaaaaaaaaaaaaaaaaaaaa");
  }

  $.ajax({
    type: "post",
    url: "../test/request.php",
    data: payload,
    beforeSend: function () {},
    success: function (res) {
      console.log(res);
    },
    error: function (xhr1) {},
  });

php

<?php

ini_set('max_input_vars', 200000); //未生效

$data = $_REQUEST;
echo json_encode(['date' => $data['date'], 'num' => count($data['sn'])]);

结果如下,使用ini_set临时修改max_input_vars,并未生效,大概只能去php.ini中修改了

最终解决方案:将数组参数变成字符串参数,减少传递的参数个数

js

const payload = { date: "2024-05-10", sn: "" };
const sn = [];
for (let i = 1; i <= 20000; i++) {
    sn.push("aaaaaaaaaaaaaaaaaaaaaa");
}
payload["sn"] = JSON.stringify(sn);

$.ajax({
    type: "post",
    url: "../test/request.php",
    data: payload,
    beforeSend: function () {},
    success: function (res) {
        console.log(res);
    },
    error: function (xhr1) {},
});

 php

<?php

$data = $_REQUEST;
echo json_encode(['date' => $data['date'], 'num' => count(json_decode($data['sn'], true))]);

 

标签:截断,ajax,参数,sn,date,data,payload
From: https://www.cnblogs.com/caroline2016/p/18193578

相关文章

  • openGauss 通过创建临时表并截断原始表来执行深层复制
    通过创建临时表并截断原始表来执行深层复制该方法使用CREATE**TEMP**TABLE...AS语句创建原始表的临时表,然后截断原始表并从临时表填充它完成原始表的深层复制。在新建表需要保留父表的主键属性,或如果父表具有依赖项的情况下,建议使用此方法。操作步骤使用CREATE**TEMP*......
  • TextMeshPro - 材质参数 - Lighting
    Bevel:斜面效果Type:OuterBevel: 外斜面,从边缘向上凸,当中平的;InnerBevel: 内斜面,从斜面开始绘制位置向下凹 amount: 斜面明显程度,默认0.5对于三,它的斜面宽度差不多是字符笔画宽度的0.26,当把width设置成-0.23时,就可以看到斜面的开始位置offset: 可以调整斜面绘制......
  • TextMeshPro - 材质参数 - 描边,投影,外发光,内发光
    有点类似photoshop中的图层样式,利用好也能制作出不错的艺术字效果。 Face: 文字外观 color: 文字颜色softness: 羽化程度 dilate: 外扩(变粗)或内收(变细)Texture: 贴图填充在字形内SpeedX: 贴图在x方向移动  Outline: 居中描边color: 描边颜色T......
  • Pytest参数化用例
    Pytest参数化用例参数化:通过参数的方式传递数据,从而实现数据与脚本分离,并且可以实现用例的重复生成与执行。装饰器:@pytest.mark.parametrize单参数importpytestsearch_list=["appium","selenium","pytest"]#参数化实现测试用例的动态生成#第一种:单参数情况,每一条......
  • 如何优雅的使用aop记录带参数的复杂web接口日志
    1、新建一个自定义注解packagecom.ninestar.userFile.aop.annotation;importcom.ninestar.userFile.constant.Constants;importjava.lang.annotation.*;/***系统日志注解**@AuthorTring*@Date2024年5月7日14:31:18*/@Target(ElementType.METHOD)@Re......
  • python类函数定义第一个参数必须是self
     如果不写self,则会报错   加上之后错误就会消失 ......
  • Rust数据驱动-参数化测试
    需求假如有以下测试用例,同样的逻辑,我们需要测试多组数据。modtests{#[test]fntest_add(){leta=1;letb=2;assert_eq!(a+b,3);}}一般情况下我们不在用例中使用for循环(即subtests子测试模式)来验证多组数据。modtest......
  • shell传递参数
    执行脚本时传入参数[root@VM-12-15-centoshome]#vitest.sh#编写如下echo"Shell传递参数实例!";echo"执行的文件名:$0";echo"第一个参数为:$1";echo"第二个参数为:$2";echo"第三个参数为:$3";#设置权限[root@VM-12-15-centoshome]#chmod+xtest.sh......
  • m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       低密度奇偶校验码(Low-DensityParity-CheckCodes,LDPCcodes)因其优秀的纠错能力和接近香农极限的性能而广泛应用于现代通信系统中。有序统计译码(OrderedStatisticsDecoding,OSD)......
  • 理解Nginx超时时间参数
    Nginx是一款自由、开源、高性能的HTTP和反向代理服务器,它可以通过不同的设置来提高网站的性能和安全性。其中,设置Nginx超时时间非常重要,因为它将直接影响网站的响应速度和用户体验。本文将从多个方面详细阐述Nginx超时时间的设置方法与注意事项。一、请求超时时间设置请求超时时......