我需要在弹出窗口中获取从表单发送的数据,但表单中存在许多具有相同名称的复选框的问题,例如name='list[]'
:
JS:
function showPopup(){
var user = document.getElementById("check").value;
var popup = window.open("milestone.php?a="+user,"hhhhhh","width=440,height=300,top=100,left=300,location=1,status=1,scrollbars=1,resizable=1") ;
}
html:
<input type='checkbox' name="approve[]" value="get from Mysql">
<input type='checkbox' name="approve[]" value="get from Mysql">
<input type='checkbox' name="approve[]" value="get from Mysql">
答案 0 :(得分:0)
如果你想通过get传递数组,你应该遍历所有选中的复选框并将所有人的值存储在数组中,然后使用JSON.stringify
将它们转换为Json,这样你就可以将它们传递到url:
function showPopup(){
var approve_array=[];
var checked_checkboxes = document.querySelectorAll('input[type="checkbox"]:checked');
for(var i=0;i<all_checkboxes.length;i++){
approve_array[i] = checked_checkboxes[i].value;
}
var url = "milestone.php?approve="+JSON.stringify(approve_array);
var popup = window.open(url,"hhhhhh","width=440,height=300,top=100,left=300,location=1,status=1,scrollbars=1,resizable=1") ;
}
在你的php页面中,你可以使用json_decode
:
$array_of_approves = json_decode($_GET['approve']);
希望这有帮助。
答案 1 :(得分:0)
var user = document.getElementById("check").value;
这不会起作用,因为:
这些字段都具有相同的名称。使用名称。
var inputs = document.getElementsByName("approve[]")
然后您需要从中生成表单数据,过滤掉未检查的表单数据:
var form_data = [];
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if (input.checked) {
form_data.push(encodeURIComponent(input.name) + "=" + encodeURIComponent(input.value));
}
}
然后将所有表单数据放在一起:
var form_data_query_string = form_data.join("&");
然后将其放入您的网址:
var url = "milestone.php" + "?" + form_data_query_string;
然后打开新窗口:
var popup = window.open(url,"hhhhhh","width=440,height=300,top=100,left=300,location=1,status=1,scrollbars=1,resizable=1") ;
答案 2 :(得分:-1)
您可以访问以下值:
$approveList= $_POST['approve'];
可以迭代为
foreach ($approveList as $approve){
echo $approve."<br />";
}