Rav*_*pta 10 html javascript arrays post multidimensional-array
我有一个像下面的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>
Run Code Online (Sandbox Code Playgroud)
我想知道在HTTP请求中将传递多少参数,它只有一个或六个.如何编写表单以便将6个以上的键值对作为一个参数传递.
谢谢你的投入.
编辑: 看起来下面的请求是在请求中发送6个参数,我怎样才能为下面的表单发送param
<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>
Run Code Online (Sandbox Code Playgroud)
kav*_*kav 10
默认情况下,表单将以application/x-www-form-urlencoded内容类型提交,因此您的数据将由这些规则进行URI编码.
编码:
myList中5B%5D%=约翰&myList中5B%5D%=彼得myList中5B%5D%=迈克&myList中5B%5D%=新&myList中5B%5D%=斯特拉&myList中5B%5D%=夏娃
解码:
myList中[] =约翰&myList中[] =彼得myList中[] =迈克&myList中[] =新&myList中[] =斯特拉&myList中[] =夏娃
如果您只想提交一个参数,则应在客户端对数据进行编码,例如,您可以用逗号分隔所有值.
这是一个工作示例(使用 jQuery):
$('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);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将创建隐藏的_data输入,并将disabled属性添加到其他输入字段,因此它们将不会提交给服务器.
_data =约翰,彼得,迈克,NeoStella,夏娃
在服务器端,您应该解码该数据,例如:
// var_dump( $_POST );
if( ! empty( $_POST['_data'] ) {
$myList = explode(',', $_POST['_data']);
// var_dump( $myList );
}
Run Code Online (Sandbox Code Playgroud)