通过php中的POST具有相同名称的多个输入不起作用[重复]
Posted
技术标签:
【中文标题】通过php中的POST具有相同名称的多个输入不起作用[重复]【英文标题】:Multiple inputs with same name through POST in php is not working [duplicate] 【发布时间】:2014-07-09 05:27:51 【问题描述】:我有一个带有 2 个输入的表单,如下所示。我正在通过 ajax 发送 POST 请求
<input name="item_name[]" value="Monthly" id="i1"/>
<input name="item_name[]" value="Weekly" id="i2" />
xmlhttp.open("POST","validation.php",true);
var params = "item_name="+document.getElementById('i1').value+"item_name="+document.getElementById('i2').value;
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);
当我在 php 中提交页面时,我无法读取这两个值。该数组仅显示第一个值的一个字符。
echo '1.'.$_POST['item_name'][0].' 2.'.$_POST['item_name'][1];
输出为:1.M 2.o
预期输出是1.Monthly 2.Weekly
即使,我尝试打印$_POST['item_name']
,它只显示每月。
Chrome --> 开发者工具 --> 也提供正确的输出。不知道问题出在哪里?
【问题讨论】:
工作正常,你确定它们拼写相同并且有[]
吗?
@AbraCadaver :我在我的问题中添加了更多细节。我正在通过 AJAX 请求提交页面。
【参考方案1】:
编辑:(现在使用 Ajax。我在这里使用 JQuery,但概念应该保持相似)
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
var myData = new Array();
myData[0]="one";
myData[1]="two";
$.ajax(
type: "POST",
url: 'test2.php',
data: 'data':myData,
success: function(output)
//do something
);
</script>
导致 PHP (var_dump($_POST))
array(1)
["data"]=>
array(2)
[0]=>
string(4) "one"
[1]=>
string(3) "two"
【讨论】:
我在我的问题中添加了更多细节。我正在通过 AJAX 请求提交页面 已编辑。但是我总是使用 JQuery,因为在我看来这更容易。希望这仍然有帮助。 如果您看到有问题的快照,它会正确发送两个值,但 PHP 无法识别它。 如果您 var_dump $_POST 并且值未正确显示,则您的 ajax-request/JS 中有错误,而 PHP 中没有。所以你可能在错误的地方搜索。 var_dump $_POST 只返回 1 条记录。尽管 Chrome 页面告诉它发送了两个值,但第二个没有出现【参考方案2】:自己找到答案..
需要在 javascript 代码中添加[]
符号。它现在工作正常..
var params = "item_name[]="+document.getElementById('i1').value+"item_name[]="+document.getElementById('i2').value;
【讨论】:
以上是关于通过php中的POST具有相同名称的多个输入不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过 AJAX 提交多个具有相同名称的 HTML 表单 [重复]