在PHP中通过POST使用相同名称的多个输入不起作用

时间:2014-05-20 19:39:16

标签: javascript php html ajax

我有一个包含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 - &gt;开发人员工具 - &gt;也提供适当的输出。我不知道问题在哪里?

enter image description here

2 个答案:

答案 0 :(得分:2)

编辑:(现在使用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"
  }
}

答案 1 :(得分:1)

发现自己回答.. 需要在javascript代码中添加[]符号。它现在工作正常..

var params = "item_name[]="+document.getElementById('i1').value+"item_name[]="+document.getElementById('i2').value;