关于POST方式提交数组想处理成字符串的问题

时间:2021-08-31 10:22:26
<form action="a.php" method="post">
<input name="item[]" value="1" size="15" />
<input name="item[]" value="2" size="15" />
<input name="item[]" value="3" size="15" />
<input name="item[]" value="4" size="15" />
<input name="item[]" value="5" size="15" />
<input type="button" value="提交" />
</form>
JS脚本里写上document.forms[0].submit();提交到a.php页面。正常方式提交上去,在a.php接收$_POST['item']=array(1,2,3,4,5),这是一个数组来的,我现在需要在提交之前,将name=item[]的input值串联起来,处理成字符串的形式为(1,2,3,4,5),再POST方式提交上去,可以做吗?并应该如何弄呢? 

8 个解决方案

#1


如果是在 php 端连接成字符串,php 已经提供了 join 和  implode 函数
如果是 js 完成,这已经超出本版讨论的范围了,提醒一下:就是的数组对象有一个 join 方法

#2


引用 1 楼 xuzuning 的回复:
如果是在 php 端连接成字符串,php 已经提供了 join 和  implode 函数
如果是 js 完成,这已经超出本版讨论的范围了,提醒一下:就是的数组对象有一个 join 方法


谢谢你,我需要是在JS完成,我也知道有个join方法,但是在提交的那一步,我不知道怎么处理才好。因为上面已经写了<form action="a.php" method="post">

#3


表单中加上一个隐藏域:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
window.onload = function() {
document.getElementsByTagName('form')[0].onsubmit = function() {
var ar_items = [];
var obj = this.getElementsByTagName('input');
for(var i = 0; i < obj.length; i ++) {
if (obj[i].name == 'item[]') ar_items.push(obj[i].value);
}
var str_items = '';
if (ar_items.length > 0) str_items = '(' + ar_items.join(',') + ')';
document.getElementById('ar_items').value = str_items;
}
}
</script>
</head>

<body>
<form action="a.php" method="post">
<input name="item[]" value="1" size="15" />
<input name="item[]" value="2" size="15" />
<input name="item[]" value="3" size="15" />
<input name="item[]" value="4" size="15" />
<input name="item[]" value="5" size="15" />
<input type="hidden" id="ar_items" name="ar_items" />
<input type="submit" value="提交" />
</form>
</body>
</html>

#4


serialize()对象序列化试试
提取时unserialize()

#5


自己写个得到Array集合的方法

$a_value =@ $_POST[$变量名];
if (is_array($a_value))
{
foreach ($a_value as $i_key => $s_value)
{
$a_value[$i_key] = $s_value;
}
}
return $a_value;

方法名叫GetPostList($变量)
然后页面所有文本框名称一样   后台取值就行

#6


引用 3 楼 t5500 的回复:
表单中加上一个隐藏域:
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<m……

此答案为正解,我早上醒来,就想到这个办法最好,谢谢各位兄弟朋友的解答!

#7


路过学习了

#8


出于安全,推荐在服务端组装!

#1


如果是在 php 端连接成字符串,php 已经提供了 join 和  implode 函数
如果是 js 完成,这已经超出本版讨论的范围了,提醒一下:就是的数组对象有一个 join 方法

#2


引用 1 楼 xuzuning 的回复:
如果是在 php 端连接成字符串,php 已经提供了 join 和  implode 函数
如果是 js 完成,这已经超出本版讨论的范围了,提醒一下:就是的数组对象有一个 join 方法


谢谢你,我需要是在JS完成,我也知道有个join方法,但是在提交的那一步,我不知道怎么处理才好。因为上面已经写了<form action="a.php" method="post">

#3


表单中加上一个隐藏域:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
window.onload = function() {
document.getElementsByTagName('form')[0].onsubmit = function() {
var ar_items = [];
var obj = this.getElementsByTagName('input');
for(var i = 0; i < obj.length; i ++) {
if (obj[i].name == 'item[]') ar_items.push(obj[i].value);
}
var str_items = '';
if (ar_items.length > 0) str_items = '(' + ar_items.join(',') + ')';
document.getElementById('ar_items').value = str_items;
}
}
</script>
</head>

<body>
<form action="a.php" method="post">
<input name="item[]" value="1" size="15" />
<input name="item[]" value="2" size="15" />
<input name="item[]" value="3" size="15" />
<input name="item[]" value="4" size="15" />
<input name="item[]" value="5" size="15" />
<input type="hidden" id="ar_items" name="ar_items" />
<input type="submit" value="提交" />
</form>
</body>
</html>

#4


serialize()对象序列化试试
提取时unserialize()

#5


自己写个得到Array集合的方法

$a_value =@ $_POST[$变量名];
if (is_array($a_value))
{
foreach ($a_value as $i_key => $s_value)
{
$a_value[$i_key] = $s_value;
}
}
return $a_value;

方法名叫GetPostList($变量)
然后页面所有文本框名称一样   后台取值就行

#6


引用 3 楼 t5500 的回复:
表单中加上一个隐藏域:
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<m……

此答案为正解,我早上醒来,就想到这个办法最好,谢谢各位兄弟朋友的解答!

#7


路过学习了

#8


出于安全,推荐在服务端组装!