- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,如果我使用 name[] 的复选框值,那么我将在服务器上收到一个名为“name[]”的数据数组(使用 PHP 时)。这对我来说效果很好,但我遇到了一些 URL 大小,可能会导致不太强大的 IE 浏览器出现问题,并且所有编码的方括号在这方面都让我很烦恼,很容易导致 URL 长度至少为 4-6如果有其他方法可用的话,比可能的时间长几倍。有没有一种可靠的方法使用javascript(jquery语法更好)来拦截复选框表单值并将它们转换成这样的东西:
“&checkboxarray=1-23-45-13-67”
我认为,在另一端,我可以轻松地将 $_GET['checkboxarray'] 分解为一个实际数组,然后从那里开始,就像我通常将选择数组与选项数组相匹配等一样......我只是不知道不知道是否可能或如何创建更改提交过程。
旁注,将“name[]”传递给 URL 是否不符合标准?我使用过的每个浏览器都会对其进行自动编码,但 Mozilla 不会,但它似乎工作正常。
编辑:我需要创建分页链接,这就是我使用 GET 而不是 POST 的原因。这也是工业搜索,非常全面,有很多高级用户选项。
更新和答案:我设法想出了自己的答案。对于想要利用 $_GET 的简单分页工作流程但需要传递大型数据数组并担心 URL 长度的任何其他人,这里有一种简单的方法将其全部压缩为一个带有短划线分隔值的变量:
注意:如果您要在提交后重新检查值,我强烈建议您首先确保从查询生成的任何动态数组都以 1 而不是 0 开头,具体方法如下,因为 0 可能会很痛苦在 PHP 条件语句中使用:
$your_array= array();
array_unshift($your_array,'');
unset($your_array[0]);
在您的 HTML 代码中,将所有复选框输入名称设置为“something[]”,并在这组输入下创建一个名为“something”的隐藏输入,我建议您使它们匹配,但我想您可以使用另一种名称,只需确保隐藏的名称缺少方括号,并将隐藏的输入值设置为“”:
<input type="text" name="something[]" value="1">
.....
<input type="text" name="something[]" value="20">
<input type="hidden" name="something" value="">
Javascript:注意,需要jquery...这会获取所有“something[]”输入值并形成一个虚线数组,同时阻止“something[]”值被提交并仅提交“something”。
$('#submitbutton').click(function(){
var searchIDs = $('input[name="something[]"]:checked').map(function(){
return $(this).val();
}).get();
var IDstring = searchIDs.toString();
var newvar = IDstring.replace(/,/g, '-');
$('input[name="something"]').val(newvar);
$('input[name="something[]"]:checkbox').prop("checked", false);
});
在服务器端,只需从 $_GET 中分解“something”值即可。
$somethingArray = explode('-',$_GET['something']);
就是这样!希望它能帮助将来的人使他们的 GET 发送数组更加紧凑。奖励:避免在 URL 中发送不安全字符,Mozilla 似乎不会自动编码方括号,至少我在 Linux Mint 上的版本不是;)
更新:
我刚刚在一个大国复选框表单上实现了这段代码,有 284 个可能的选择。使用我的旧代码,即使使用“c[]”作为名称,我的字符数约为 3100 个字符,使用新方法,我的字符数现在仅为 1109。值得付出努力。
最佳答案
您可以使用POST
代替GET
方法。
GET
有 URL 长度限制。
POST
在传递长数据时很有用,例如在你的情况下是一个数组。
POST
方法的默认限制为 2MB
,远高于 GET
。如果需要,可以在 php.ini
文件 post_max_size 10MB
中轻松增加。
将脚本中的 $_GET
替换为 $_POST
。
关于javascript - 将复选框数组传递给 $_GET 的替代方法 - 除了方括号之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679604/
我一直想知道两者之间有什么区别 mov esi,eax 和 mov [esi],eax 曾经是。 感谢任何帮助。 最佳答案 mov esi,eax 将寄存器eax的内容写入寄存器esi。 mov [e
如果有人能帮助我满足 JAVA 正则表达式要求,我将不胜感激我有一个像 "/ABC/KLM[XYZ/ABC/KLM]/ABC"这样的字符串 我想替换所有不用方括号括起来的ABC。在这种情况下,只应找到
我需要替换 key:value 对周围的方括号,类似于以下内容。任何帮助深表感谢! “属性”中的数据如下所示: name: property1 value: [12345667:97764458] *
我正在尝试使用某种 grok 模式来使用以下日志记录格式: *Sun 07:05:18.372 INFO [main] [userID] perf - 0ms - select x from y 我
我在 R 中有一个函数,看起来有点像这样: setMethod('[', signature(x="stack"),definition=function(x,i,j,drop){ new('cl
我将这些定义放在一个文件中: x = 'a' : 'b' : 'c' : [] y = ['a', 'b', 'c'] (重要的是在文件中定义它们,而不是在 GHCi 中,因为在后一种情况下,事情变得
我喜欢将DocBlockr插件用于精美文字,但我希望自己的评论有所不同。 正常出现: 以及我希望它们出现的方式: 因此,是否有这样做的type,description和[]方括号呢?我已经搜寻了一下,
让我们考虑以下是我的对象: var n = {"aa":"x","dd":'d'}; 我在 Object.assign 中使用方括号.它给出了以下结果。 [aa: "x", dd: "d"] .最终代
我正在尝试使用正则表达式从 KEY PAIR VALUE 中找出 VALUE。 VALUE 可以有 [ ](方括号)。如果 VALUE 中存在 [ ](方括号),那么我只想提取 [ ] 之外的字符。
这个问题在这里已经有了答案: What is array literal notation in javascript and when should you use it? (4 个答案) 关闭
这个问题在这里已经有了答案: What do square brackets around a property name in an object literal mean? (2 个答案) 关闭
我有一个语法标记指定为: list_value = Suppress(oneOf("[ (")) + Group( delimitedList(string_value | int_value
如何替换这种格式的标记: [a href="/my_page" style="font-size: 13px"]click me[/a] 到 click me 使用 preg_replace()? 我
使用下面的代码,我可以将 Number123(45) 转换为 Number。 $string = 'Number123(45)'; $string2 = preg_replace('/[0-9]+
我知道硬括号('[' 和 ']')用于标识数组,但是在搜索如何使用事件时,我偶然发现了它们的另一种用法,并且想知道它到底意味着什么...... 我看到的代码 ( link ) 如下所示: // evh
This question already has an answer here: gRPC/Protobuf 3 syntax: what is the difference between rpc
在vim中,您可以通过vi“,vi [,vi(... 例如,如果您有这样的一行: x = "difference between vim and emacs" 并且光标位于这些引号之间的任意位置,然后
AngularJS将方括号用作其指令的参数 (input[number]) 但是Jade also uses square brackets for class attributes。 所以这行不通
正则表达式中的点. 匹配任何单个字符。为了使正则表达式匹配点,必须对点进行转义:\. It has been pointed out to me方括号 [] 内的点不必转义。例如,表达式:[.]{3}
这个问题已经有答案了: What is the difference between square brackets and parentheses in a regex? (3 个回答) 已关闭 8
我是一名优秀的程序员,十分优秀!