我有一个包含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;也提供适当的输出。我不知道问题在哪里?
答案 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;