我有一个如下所示的 HTML 表单,它使用 2D 数组来存储输入元素
<form action="/myAction" method="post">
<input type="text" name="myList[1][NAME]" value="John" />
<input type="text" name="myList[1][AGE]" value="20" />
<input type="text" name="myList[2][NAME]" value="Mike" />
<input type="text" name="myList[2][AGE]" value="30" />
<input type="text" name="myList[3][NAME]" value="Sam" />
<input type="text" name="myList[3][AGE]" value="40" />
<input type="submit" value="submit" />
</form>
我想知道HTTP请求中会传递多少个参数,是1个还是6个。我怎样才能编写我的表单,以便将以上 6 个键值对作为一个参数传递。
感谢您的投入。
EDIT:看起来下面的请求在请求中发送了 6 个参数,我怎样才能只为下面的表单发送参数
<form action="/myAction" method="post">
<input type="text" name="myList[]" value="John" />
<input type="text" name="myList[]" value="Peter" />
<input type="text" name="myList[]" value="Mike" />
<input type="text" name="myList[]" value="Neo" />
<input type="text" name="myList[]" value="Stella" />
<input type="text" name="myList[]" value="Eve" />
<input type="submit" value="submit" />
</form>
默认情况下,表单将通过以下方式提交application/x-www-form-urlencoded
内容类型,因此您的数据将通过 URI 编码these http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 rules.
Encoded:
myList%5B%5D=约翰&myList%5B%5D=彼得&myList%5B%5D=迈克&myList%5B%5D=新&myList%5B%5D=斯特拉&myList%5B%5D=夏娃
Decoded:
myList[]=John&myList[]=Peter&myList[]=Mike&myList[]=Neo&myList[]=Stella&myList[]=Eve
如果您只想提交一个参数,您应该在客户端对数据进行编码,例如您可以用逗号分隔所有值。
这是一个工作示例(usingjQuery):
$('form').submit(function(e) {
processFormSubmission(this);
});
function processFormSubmission(formElem) {
var arr = [];
$(formElem).find(':input').each(function(i) {
$(this).attr('disabled', 'disabled'); // prevent from submitting
if( $(this).is(':submit') ) return true; // skip submit input field
arr.push(this.value);
});
$('<input>').attr({type: 'hidden', name: '_data', value: arr.join(',')}).appendTo(formElem);
}
上面的代码会创建隐藏的_data
输入并会添加disabled
属性到其他输入字段,因此它们不会提交到服务器。
_data=约翰、彼得、迈克、NeoStella、夏娃
在服务器端,您应该解码该数据,例如像这样的东西:
// var_dump( $_POST );
if( ! empty( $_POST['_data'] ) {
$myList = explode(',', $_POST['_data']);
// var_dump( $myList );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)