通过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 表单 [重复]

当多个输入具有相同名称时,根据输入类型设置 jquery 表单验证

发布具有相同名称属性的表单字段

如何使用多个具有相同名称的表单输入?

多个复选框共享相同的名称

如何查询多个表以获取表具有相同列名的记录